anchor.diff:              <|> VarArgsFunction R
           ) <!> "Function"
       
  -    do ArgumentListImpl := fun (R: P<Range>) -> sepBy (ExpressionDecl R) (spaces >>. pstring "," .>> spaces) <!> "ArgumentList"
  +    do ArgumentListImpl := fun (R: P<Range>) -> sepBy ((ExpressionDecl R) <!> "VarArgs Argument") (spaces >>. pstring "," .>> spaces) <!> "ArgumentList"
   
       // Binary arithmetic operators
       let BinOpChar = spaces >>. satisfy (fun c -> c = '+' || c = '-' || c = '/' || c = '*' || c = '<' || c = '>' || c = '=' || c = '^' || c = '&') .>> spaces
  
positive.code:                 getUserState >>=
                  fun us ->
                      pipe2
                          (FunctionNamesForArity n .>> pstring "(")
                          ((ArgumentsN RangeNoUnion n) .>> pstring ")")
                          (fun fname arglist -> ReferenceFunction(us, fname, arglist, Fixed(n)) :> Reference)
                  <!> ("Arity" + n.ToString() + "Function")
  
  
negative.code:                              return y :: ys }
          | [] -> parse { return [] }
  
      let Argument R = fun (i: int) -> (((ExpressionDecl R) .>> (spaces >>. pstring "," .>> spaces)) <!> ("Argument #" + i.ToString()))
  
      let ArgumentsN R n =
          (pipe2
              (pmap (Argument R) [1..n-1])
              ((ExpressionDecl R) <!> ("Argument #" + n.ToString() + " (last arg)"))
              (fun exprs expr -> exprs @ [expr] ) <!> ("Arguments" + n.ToString())
          )
  
  