anchor.diff:      |> List.iter (createNestedType nested_type)
   
       parent
  -    |+> nested_type        
  -    |+> provideProperty
  +    |+!> nested_type
  +    |+> fun () ->
  +        provideProperty
               name
               nested_type
               (function
  
positive.code:     let top_type =
          eraseType thisAssembly rootNamespace typeName typeof<obj>
              |> addDefinitionLocation root.Data.Position
              |+> (provideConstructor
                      [] 
                      (fun args -> 
                          match xamlInfo with 
                          | XamlInfo.Path path -> <@@ XamlReader.Parse(File.ReadAllText(path)) @@>
                          | XamlInfo.Text text -> <@@ XamlReader.Parse(text) @@>)
                  |> addXmlDoc (sprintf "Initializes a %s instance" typeName)
                  |> addDefinitionLocation root.Data.Position)
              |+> (provideProperty
                      "Control"
                      root.NodeType
                      (function
                       | [this] -> Expr.Coerce(this, root.NodeType)
                       | _ -> badargs()))
  
      for child in root.Children do
          createNestedType top_type child
  
negative.code:     
      let nested_type =
          runtimeType<obj> (mkTypeName name)
          |+!> provideConstructor
                  [("control", node.NodeType)]
                  (function
                   | [x] -> x
                   | _ -> badargs())
          |+> fun () ->
              provideProperty
                  "Control"
                  node.NodeType
                  (function
  