static ISpec owner; static Lock aiLock() { ret owner.aiLock(); } static bool ai_cache_hasTriple(T3 t) { ret ai_cache_hasTriple(t.a, t.b, t.c); } static bool ai_cache_hasTriple(S a, S b, S c) { ret owner.ai_cache_hasTriple(a, b, c); } static S ai_postTriple(T3 t) { ret ai_postTriple(t.a, t.b, t.c); } static S ai_postTriple(S a, S b, S c) { ret owner.ai_postTriple(a, b, c); } static L allIndexedFullTerms() { ret owner.allIndexedFullTerms(); } static L ai_texts_verified(S a, S b, S c) { ret owner.ai_texts_verified(a, b, c); } static S ai_text(S a, S b, S c) { ret owner.ai_text(a, b, c); } static void ai_spec_init() { if (owner == null) owner = (ISpec) getOpt(creator(), 'ispec); } static MultiMap dwlw_fullNodeIndex_ci() { fail("Shouldn't call"); } static Web ai_blob(S word, bool verified) { ret owner.ai_blob(word, verified); } static L ai_index_search_dollarX(S a, S b, S c) { ret owner.ai_index_search_dollarX(a, b, c); } static L indexedNodes(S s) { ret owner.indexedNodes(s); } static L indexedWebs(s) { ret owner.indexedWebs(s); }