anchor.diff:  
   let (|MakeClosure|_|) (e: Expr): (Var * Expr * ((System.Type * string) List)) Option = 
     match e with 
  -  | Patterns.Call (None, op, [Patterns.Lambda(envVar, body); Patterns.Call (None, opEnv, list)]) when op.Name = "makeClosure" && opEnv.Name = "makeEnv" -> 
  +  | Patterns.Call (None, op, [Patterns.Lambda(envVar, body); Patterns.Call (None, opEnv, list)]) when 
  +      op.Name = "makeClosure" && opEnv.Name = "makeEnv" -> 
       let envList = 
  -      let rec extractElems l = match l with
  +      let rec extractElems l = 
  +        match l with
           (* The pattern `Patterns.Call (_, _, [e])` performs an additional level of specialization.
              This specialization results in not using a union type for the variables in the enviroment 
              of a closure. *)
  -        | [ Patterns.NewUnionCase(_, [Patterns.NewTuple([Patterns.Value(v, _);Patterns.Call (_, _, [e])]); tl]) ] ->
  +        | [ Patterns.NewUnionCase(_, 
  +             [ Patterns.NewTuple([Patterns.Value(v, _); 
  +                                  Patterns.Call (_, _, [e])]); tl]) ] ->
             (e.Type, v.ToString()) :: extractElems([tl])
           | _ -> []
         extractElems list
  
positive.code:               | tp when tp = typeof<Vector> -> <@@ makeVector %%v @@>
                | tp when tp = typeof<Matrix> -> <@@ makeMatrix %%v @@>
                | tp -> failwith (sprintf "Not supported type %A" tp)
              <@@ (((%%vstr: string), (%%vexp: AnyNumeric) ): string * AnyNumeric) :: (%%acc: (string * AnyNumeric) List) @@> ) <@@ []: (string * AnyNumeric) List @@>  freeVars]
          let createdEnv = Expr.Call(makeEnvInfo, makeEnvArg)
          let makeClosureInfo = makeClosureInfoGeneric.MakeGenericMethod(inType, outType)
          let createdClosure = Expr.Call(makeClosureInfo, [closureFun; createdEnv])
  
negative.code:       | "GetArray" -> sprintf "%s[%s]" (prettyprint elist.[0]) (prettyprint elist.[1])
        | _ -> sprintf "ERROR CALL ``\n\t%s(%s)\n``" op.Name (String.concat ", " (List.map prettyprint elist))
    | Patterns.Var(x) -> sprintf "%s" x.Name
    | Patterns.NewArray(tp, elems) -> 
      sprintf "Array[%s](%s)" (tp.ToString()) (String.concat ", " (List.map prettyprint elems))
    | Patterns.Value(v, tp) -> sprintf "%s" (v.ToString())
    | _ -> sprintf "ERROR[%A]" e
  
  