A substitute<A extends AST>(AST ast, Iterable<AST> from, Iterable<AST> to) => currentContext.substitute(ast, from.toList(), to.toList()) as A;