anchor.diff:          baseClass
           ctor
                   
  -
  +let populateTypeMappings () =
  +    doc.Document.XPathSelectElements("//types/type") |> Seq.iter populateTypeMapping
  +    doc.Document.XPathSelectElements("//union") |> Seq.iter populateUnionMapping
   
   let getAllRequestTypes () =
       sprintf """// Code generated by UpdateJson.fsx. Do not hand-edit!
  
positive.code: let populateTypeMapping (typeNode : XElement) =
      if typeNode.Element(!!"ref") <> null then
          mappedTypes <- mappedTypes.Add ((typeNode.Attribute(!!"name").Value), getCSharpType (typeNode.Element(!!"ref").Value))
  
  let populateTypeMappings () =
      doc.Document.XPathSelectElements("//types/type") |> Seq.iter populateTypeMapping
  
  let extractDoc (indent : int) (fieldNode : XElement) =
      let indentString = new String('\t', indent)
  
negative.code: let getAllJsonTypes () =
      sprintf """// Code generated by UpdateJson.fsx. Do not hand-edit!
  
  using System.Collections.Generic;
  
  namespace DanTup.DartAnalysis.Json
  {
  %s
  %s
  %s
  %s
  }"""
          (doc.Document.XPathSelectElements("//union") |> collect getUnionInterfaces)
          (doc.Document.XPathSelectElements("//types/type") |> collect getType)
          (doc.Document.XPathSelectElements("//domain/request") |> collect getRequest)
          (doc.Document.XPathSelectElements("//domain/request") |> collect getResponse)
  