anchor.diff:              let rec eraseType(typ:Type): Type =
                   match typ with
                   | t when t.Attributes &&& enum (int32 TypeProviderTypeAttributes.IsErased) <> enum 0 -> eraseType typ.BaseType
  +                | t when isFSharpUnitAnnotated t -> eraseType typ.UnderlyingSystemType
                   | t when t.IsArray ->
                       let rank = t.GetArrayRank()
                       let et = eraseType (t.GetElementType())
  
positive.code:                         let args = String.concat "," args
                          let name, reverse =
                              match t with
                              | t when hasUnitOfMeasure -> toString useFullName t.UnderlyingSystemType, false
                              // Short names for some known generic types
                              | t when not useQualifiedNames && t.GetGenericTypeDefinition().Name = typeof<int seq>.GetGenericTypeDefinition().Name -> "seq", true
                              | t when not useQualifiedNames && t.GetGenericTypeDefinition().Name = typeof<int list>.GetGenericTypeDefinition().Name -> "list", true
  
negative.code: 
              if ignoreOutput then
                  ""
              elif hasUnit || t.IsGenericParameter || t.DeclaringType = null then
                  innerToString t + (warnIfWrongAssembly t)
              else
                  (toString useFullName t.DeclaringType) + "+" + (innerToString t) + (warnIfWrongAssembly t)
  