public IExpr <T> Process <T>(IExpr <T> expr) { return((IExpr <T>)expr.Patch(this)); }
public IExpr Process(IExpr expr) => expr.Patch(this);
public static IExpr Map(this IExpr expr, Func<IExpr, IExpr> f) { var dic = new Dictionary<IExpr, IExpr>(); _fillDic(expr, f, dic); return expr.Patch(new Patch(dic)); }