anchor.diff:                          base.IsAssignableFrom(otherTy)
               | _ -> base.IsAssignableFrom(otherTy)
   
  -        override __.Name = nameText()
  +        override __.Name = 
  +            match kind,typeArgs with
  +            | ProvidedSymbolKind.SDArray,[arg] -> arg.Name + "[]"
  +            | ProvidedSymbolKind.Array _,[arg] -> arg.Name + "[*]"
  +            | ProvidedSymbolKind.Pointer,[arg] -> arg.Name + "*"
  +            | ProvidedSymbolKind.ByRef,[arg] -> arg.Name + "&"
  +            | ProvidedSymbolKind.Generic gty, typeArgs -> gty.Name
  +            | ProvidedSymbolKind.FSharpTypeAbbreviation (_,_,path),_ -> path.[path.Length-1]
  +            | _ -> failwith "unreachable"
   
           override __.BaseType =
               match kind with
  
positive.code:             | ProvidedSymbolKind.ByRef,[arg] -> arg.Namespace
              | ProvidedSymbolKind.Generic gty,_ -> gty.Namespace
              | ProvidedSymbolKind.FSharpTypeAbbreviation (_assembly,nsp,_path),_ -> nsp
              | _ -> notRequired this "Namespace" (nameText())
  
          override x.Module = x.Assembly.ManifestModule
  
  
negative.code:             let fields = ResizeArray()
              for v in freeVars do
                  let f = lambda.DefineField(v.Name, transType v.Type, FieldAttributes.Assembly)
                  //Debug.Assert (v.Name <> "formatValue")
                  fields.Add(v, f)
  
              let lambdaLocals = Dictionary()
  