anchor.diff:                  | LocalVar -> Var v  
                   | FuncArg -> Var v
                   | ByRefArg -> 
  -                    let t = expr.Type
  +                    let t = getOrigType expr.Type
                       if t.HasTypeDefinition && t.TypeDefinition.IsByRef then Var v else GetRef (Var v)
                   | ThisArg -> This
           | P.Lambda _ ->
  
positive.code:         body |> List.foldBack (fun (c, r) body -> Let (c, r, body)) (List.zip captures results)
  
  let removeListOfArray (argType: FSharpType) (expr: Expression) =
      if isSeq argType then
          match IgnoreExprSourcePos expr with
          | Call (None, td, meth, [ NewArray _ as arr ]) 
              when td.Entity = Definitions.ListModule && meth.Entity = Definitions.ListOfArray  ->
  
negative.code: 
  let newId() = Id.New(mut = false)
  let namedId (i: FSharpMemberOrFunctionOrValue) =
      let isTuple = (getOrigType i.FullType).IsTupleType
      if i.IsCompilerGenerated then
          let n = i.DisplayName.TrimStart('(', ' ', '_', '@')
          if n.Length > 0 then
  