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 maxWidth = defaultArg maxWidth 100
          let useQualifiedNames = defaultArg useQualifiedNames false
  
          let knownNamespaces =
              [ t.Namespace
                "Microsoft.FSharp.Core"
  
negative.code: 
          let rec toString useFullName (t: Type) =
  
              let hasUnit =  hasUnitOfMeasure t
  
              let innerToString (t: Type) =
                  match t with
                  | _ when t.Name = typeof<bool>.Name && not hasUnit -> "bool"
                  | _ when t.Name = typeof<obj>.Name && not hasUnit  -> "obj"
                  | _ when t.Name = typeof<int>.Name && not hasUnit  -> "int"
                  | _ when t.Name = typeof<int64>.Name && not hasUnit  -> "int64"
                  | _ when t.Name = typeof<float>.Name && not hasUnit  -> "float"
                  | _ when t.Name = typeof<float32>.Name && not hasUnit  -> "float32"
                  | _ when t.Name = typeof<decimal>.Name && not hasUnit  -> "decimal"
                  | _ when t.Name = typeof<string>.Name && not hasUnit  -> "string"
                  | _ when t.Name = typeof<Void>.Name -> "()"
                  | _ when t.Name = typeof<unit>.Name -> "()"
                  | t when t.IsArray -> (t.GetElementType() |> toString useFullName) + "[]"
  