anchor.diff:                  "createDocumentFragment" => T<unit> ^-> DocumentFragment
                   "createElement" =>
                       T<string> *
  -                    !?T<obj>?elementCreationOptions ^-> Element
  +                    !?ElementCreateOptions?elementCreationOptions ^-> Element
                   "createElementNS" =>
                       T<string>?namespaceURI *
                       T<string>?qualifiedName *
  -                    !?T<obj>?elementCreationOptions ^-> Element
  +                    !?ElementCreateOptions?elementCreationOptions ^-> Element
                   "createEntityReference" => T<string> ^-> EntityReference |> Obsolete
                   "createProcessingInstruction" =>
                       T<string>?target *
  
positive.code:                 I.CompositionEvent
                  I.MutationEvent
                  I.MutationNameEvent
                  E.DOMExceptionType
                  E.DerivationMethod
                  E.DocumentPosition
  
negative.code:             ]
  
      let DocumentFragment =
          DocumentFragment
          |=> Inherits Node
  
      let ShadowRoot =
          ShadowRoot
          |=> Inherits DocumentFragment
          |+> Instance [
              "mode" =? ShadowRootMode
              "host" =? Element
          ]
  
      let NodeIterator =
          NodeIterator
          |+> Instance [
              "root" =? Node
              "referenceNode" =? Node
              "pointerBeforeReferenceNode" =? T<bool>
              "whatToShow" =? T<int>
              "filter" =? NodeFilter
  
              "nextNode" => T<unit> ^-> Node
              "previousNode" => T<unit> ^-> Node
  
              "detach" => T<unit> ^-> T<unit>
          ]
  
      let TreeWalker =
          let UTN = T<unit> ^-> Node
          TreeWalker
          |+> Instance [
              "root" =? Node
              "whatToShow" =? T<int>
              "filter" =? NodeFilter
              "currentNode" =@ Node
  
              "parentNode" => UTN
              "firstChild" => UTN
              "lastChild" => UTN
              "previousSibling" => UTN
              "nextSibling" => UTN
              "previousNode" => UTN
              "nextNode" => UTN
          ]
  
      let NodeFilter =
          NodeFilter
          |+> Static [
              // Constants for acceptNode
              "FILTER_ACCEPT" =? T<int>
              "FILTER_REJECT" =? T<int>
              "FILTER_SKIP" =? T<int>
              // Constants for whatToShow
              "SHOW_ALL" =? T<int>
              "SHOW_ELEMENT" =? T<int>
              "SHOW_ATTRIBUTE" =? T<int>
              "SHOW_TEXT" =? T<int>
              "SHOW_CDATA_SECTION" =? T<int>
              "SHOW_ENTITY_REFERENCE" =? T<int> |> Obsolete
              "SHOW_ENTITY" =? T<int> |> Obsolete
              "SHOW_PROCESSING_INSTRUCTION" =? T<int>
              "SHOW_COMMENT" =? T<int>
              "SHOW_DOCUMENT" =? T<int>
              "SHOW_DOCUMENT_TYPE" =? T<int>
              "SHOW_DOCUMENT_FRAGMENT" =? T<int>
              "SHOW_NOTATION" =? T<int>
          ]
          |+> Instance [
              "acceptNode" => Node ^-> T<int>
          ]
  
      let EventInit =
          Pattern.Config "EventInit" {
  