anchor.diff:        | ApiSignature.UnionCase _ -> None
   
         | ApiSignature.FullTypeDefinition _ ->
  -        let urlElems, _, _ = nameElementsAndVariableId api
  -        let sb = StringBuilder().Append(urlPart urlElems).Append("?view=").Append(view)
  +        let sb = StringBuilder().Append(printUrlPart api.Signature name).Append("?view=").Append(view)
           Some (string sb)
   
         | ApiSignature.ExtensionMember (member' : Member)
         | ApiSignature.Constructor (_ , (member' : Member))
         | ApiSignature.InstanceMember (_ , (member' : Member))
         | ApiSignature.StaticMember (_ ,(member' : Member)) ->
  -        let urlElems, nameElems, variableMemory = nameElementsAndVariableId api
  -        let sb = StringBuilder().Append(urlPart urlElems).Append("?view=").Append(view).Append("#").Append(hashPart nameElems variableMemory member' api)
  +        let sb = StringBuilder().Append(printUrlPart api.Signature name).Append("?view=").Append(view).Append("#").Append(printHashPart api name member')
           Some (string sb)
   
     module internal FParsec =
  
positive.code: 
      type VariableMemory = Dictionary<string, string>
  
      let variableId (kind: ApiKind) (name: Name) =
        let variableMemory = VariableMemory()
        let memory (prefix: string) (n: NameItem) =
          n.GenericParameters
  
negative.code:       | [] | [ [ { Type = Unit } ] ] -> false
        | _ -> true
  
      let printHashPart (api: Api) (name: Name) (member': Member) (sb: StringBuilder) : StringBuilder =
        let ctx = StringJoinContext.Create("_")
        let printName' name = List.foldBack (printName "_" ctx id sb) name false |> ignore
        match api.Signature with
        | ApiSignature.FullTypeDefinition _ ->
          printName' name
        | ApiSignature.Constructor _ ->
          printName' name.Tail
          sb.Append(ctx.Print).Append("_ctor") |> ignore
        | _ ->
          printName' name.Tail
          printName "__" ctx id sb name.Head false |> ignore
  
        if hasParameter member' then
          let variableMemory = variableMemory api name
          let paramsCtx = StringJoinContext.Create("_")
          sb.Append("_") |> ignore
          for ps in member'.Parameters do
            for p in ps do
              sb.Append(paramsCtx.Print).Append(parameterElement api variableMemory p.Type) |> ignore
          sb.Append("_") |> ignore
        sb
  
      let generate (view: string) (api: Api) =
        let name = ApiName.toName api.Name
        match api.Signature with
        | ApiSignature.ActivePatten _
        | ApiSignature.ModuleValue _
  