public void TestDeconstruct() { var a = new Constant("a"); var app = new Apply( new Apply( new Apply(Funcs.Id, Funcs.Id), Funcs.Id), a); var(f, args) = app.DeconstructApply().Value; Assert.Equal(Funcs.Id.Name, ((Function)f).Name); Assert.Equal(new List <IExpression> { Funcs.Id, Funcs.Id, a }.Select(e => e.ToString()), args.Select(e => e.ToString())); }