static L ai_texts_dollarAny(S a, S b, S c) { if (isDollarVar(b)) todo(); bool va = isDollarVar(a), vc = isDollarVar(c); new L l; // no vars if (!va && !vc) { if (has(a, b, c)) l.add(emptyMap()); ret l; } // var on the left if (va && !vc) { for (S s : ai_texts("$X", b, c)) l.add(litmap(a, s)); ret l; } // var on the right if (vc && !va) { for (S s : ai_texts(a, b, "$X")) l.add(litmap(c, s)); ret l; } // vars on both sides for (WebRelation r : indexedRelations(b)) addIfNotNull(l, strictlitmapOrNull(a, web_text(r.a), c, web_text(r.b))); ret l; } static L ai_texts_dollarAny(T3 t) { ret ai_texts_dollarAny(t.a, t.b, t.c); }