anchor.diff:              | arr -> String.Join("`", arr.[0..arr.Length-2])
           noGenerics
   
  -    let externalDocsLink simple (typeName: string) (fullName: string) =
  +    let externalDocsLink isMember simple (typeName: string) (fullName: string) =
           if fullName.StartsWith "FSharp." || fullName.StartsWith "Microsoft.FSharp." then
               let noParen = removeParen typeName
  -            let docs = noParen.Replace("``", "").Replace("`", "-").Replace(".", "-").Replace("microsoft-","").ToLower()
  +            let docs = noParen.Replace("Microsoft.FSharp.","FSharp.").Replace("``", "-").Replace("`", "-").Replace(".", "-").ToLower()
               let link = sprintf "https://fsharp.github.io/fsharp-core-docs/reference/%s" docs
  +            let link = if isMember then link+"#"+(getMemberName 1 false fullName) else link
               let niceName =
                   match simple with
                   | "FSharpAsync" -> "Async"
  
positive.code:         | _ -> 
              match entity.TryFullName with
              | None -> None
              | Some nm -> Some (externalDocsLink entity.DisplayName nm nm)
  
      let resolveCrossReferenceForTypeByXmlSig (typeXmlSig: string) =
          assert (typeXmlSig.StartsWith("T:"))
  
negative.code:                 | _ ->
                      // A reference to something external, currently assumed to be in .NET
                      let simple = getMemberName 2 false memberName
                      Some (externalDocsLink true simple typeName memberName)
              | None ->
                  Log.errorf "Assumed '%s' was a member but we cannot extract a type!" memberXmlSig
                  None
  