if (b.isSame(Sig.SIGINT)) { Integer i = a.get(0).toInt(null); return i!=null; }
if (b.isSame(Sig.STRING)) { String at = a.get(0).toString(); return at.length()>0 && (at.charAt(0)=='\"'); }
}
if (b instanceof ExprBinary && ((ExprBinary)b).op==ExprBinary.Op.ARROW) {
Expr left = ((ExprBinary)b).left, right = ((ExprBinary)b).right;
int ll = left.type().arity(), rr = right.type().arity();
if (ll <= rr) return isIn(a.head(ll), left) && isIn(a.tail(rr), right);
return isIn(a.tail(rr), right) && isIn(a.head(ll), left);
}
if (b instanceof ExprBinary && ((ExprBinary)b).op==ExprBinary.Op.PLUS) {
return isIn(a, ((ExprBinary)b).left) || isIn(a, ((ExprBinary)b).right);