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: 
          override __.GetCustomAttributesData() =  ([| |] :> IList<_>)
  
          override this.MemberType = notRequired this "MemberType" (nameText())
  
          override this.GetMember(_name,_mt,_bindingFlags) = notRequired this "GetMember" (nameText())
  
          override this.GUID = notRequired this "GUID" (nameText())
  
          override this.InvokeMember(_name, _invokeAttr, _binder, _target, _args, _modifiers, _culture, _namedParameters) = notRequired this "InvokeMember" (nameText())
  
          override this.AssemblyQualifiedName = notRequired this "AssemblyQualifiedName" (nameText())
  
          override this.GetCustomAttributes(_inherit) = emptyAttributes
  
  
negative.code: 
          let transCtorRef (m:ConstructorInfo) = 
              let dty = m.DeclaringType
              // Remove the generic instantiations to get the uninstantiated identity of the method
              let m2 = m.GetDefinition()
              let cc = (if m2.IsStatic then ILCallingConv.Static else ILCallingConv.Instance)
  