anchor.diff:              ]
   
       let DocumentFragment =
  -        Class "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" {
  
positive.code:     let DOMLocator = Class "DOMLocator"
      let Event = Class "Event"
      let AbstractView = Class "AbstractView"
  
  [<AutoOpen>]
  module private Enumerations =
  
negative.code:                     |> Obsolete
              ]
  
      let MutationRecord =
          Class "MutationRecord"
          |+> Instance [
              "tpye" =? T<string>
              "target" =? Node
              "addedNodes" =? NodeList
              "removedNodes" =? NodeList
              "previousSibling" =? Node
              "nextSibling" =? Node
              "attributeName" =? T<string>
              "attributeNamespace" =? T<string>
              "oldValue" =? T<string>
          ]
  
      let MutationObserverInit =
          Pattern.Config "MutationObserverInit" {
              Required = []
              Optional = 
                  [
                      "attributes", T<bool>
                      "characterData", T<bool>
                      "attributeOldValue", T<bool>
                      "characterDataOldValue", T<bool>
                      "attributeFilter", T<string []>
                      "subTree", T<bool>
                      "childList", T<bool>
                  ]
          }
  
      let MutationObserver =
          Class "MutationObserver"
          |+> Instance [
              "disconnect" => T<unit> ^-> T<unit>
              "observe" => (Node * !?MutationObserverInit) ^-> T<unit>
              "takeRecords" => T<unit> ^-> Type.ArrayOf MutationRecord
          ]
  
      let MutationEvent =
          Class "MutationEvent"
          |=> Inherits Event
  