anchor.diff:    result.FParams[1] := Param2;
   end;
   
  +class function Expr.NaryFunc.Create(const Name: string; const Body, Param1,
  +  Param2, Param3: Expr): NaryFunc;
  +begin
  +  result.FName := Name;
  +  SetLength(result.FBody, 1);
  +  result.FBody[0] := Body;
  +  result.FParamCount := 3;
  +  SetLength(result.FParams, result.FParamCount);
  +  result.FParams[0] := Param1;
  +  result.FParams[1] := Param2;
  +  result.FParams[2] := Param3;
  +end;
  +
   function Expr.NaryFunc.GetBody: Expr;
   begin
     result := FBody[0];
  
positive.code: 
        Func1 = reference to function(const Param: Expr): NaryFunc;
        Func2 = reference to function(const Param1, Param2: Expr): NaryFunc;
  
        LambdaParam = record
        strict private
  
negative.code: begin
    result := Expr(Value1) or Expr(Value2);
  end;
  
  { Expr.LambdaParam }
  
  