anchor.diff:          match typ.BaseType with
           | Some baseType ->
               //TODO: would be better to reuse instead of reparsing the base type xml docs
  -            let cmds, comment = readCommentAndCommands ctx baseType.NamedEntity.XmlDocSig
  +            let cmds, comment = readCommentAndCommands ctx baseType.TypeDefinition.XmlDocSig
               match cmds with
  -            | Command "omit" _ -> yield! getMembers baseType.NamedEntity
  +            | Command "omit" _ -> yield! getMembers baseType.TypeDefinition
               | _ -> ()
           | None -> ()
         ]
  
positive.code:         (formatTypeWithPrec 2 ty1) + "*" + (formatTypeWithPrec 2 ty2)
      | MeasureInv ty -> "/" + (formatTypeWithPrec 1 ty)
      | MeasureOne  -> "1" 
      | _ when typ.IsNamedType -> 
          let tcref = typ.NamedEntity 
          let tyargs = typ.GenericArguments |> Seq.toList
          // layout postfix array types
          formatTypeApplication (formatTyconRef tcref) prec tcref.UsesPrefixDisplay tyargs 
  
negative.code:     attribs |> Seq.exists (fun a -> isAttrib<'T>(a))
  
    let (|MeasureProd|_|) (typ : FSharpType) = 
        if typ.HasTypeDefinition && typ.TypeDefinition.LogicalName = "*" && typ.GenericArguments.Count = 2 then Some (typ.GenericArguments.[0], typ.GenericArguments.[1])
        else None
  
    let (|MeasureInv|_|) (typ : FSharpType) = 
        if typ.HasTypeDefinition && typ.TypeDefinition.LogicalName = "/" && typ.GenericArguments.Count = 1 then Some typ.GenericArguments.[0]
        else None
  
    let (|MeasureOne|_|) (typ : FSharpType) = 
        if typ.HasTypeDefinition && typ.TypeDefinition.LogicalName = "1" && typ.GenericArguments.Count = 0 then  Some ()
        else None
  
    let formatTypeArgument (typar:FSharpGenericParameter) =
  