anchor.diff:                      then yield element
                       else ()
               ]
  -    
  +        
  +        /// <summary>
  +        /// Returns the current element and any other elements that match the given
  +        /// set of names
  +        /// </summary>
  +        /// <param name="names">The set of names to match against</param>
  +        /// <param name="x">The given node</param>
           let elementsAndSelfNamed names x = 
               let nameSet = Set.ofSeq (names |> Seq.map (fun (n:string) -> n.ToLowerInvariant()))
               elementsAndSelf (fun x -> name x |> nameSet.Contains) x
       
  +        
  +        /// <summary>
  +        /// Returns true if any of the elements of the current node exist in the 
  +        /// given set of names, this also includes the current node
  +        /// </summary>
  +        /// <param name="names">The set of names to match against</param>
  +        /// <param name="x">The given node</param>
           let hasElementsAndSelf names x = 
               elementsAndSelfNamed names x |> List.isEmpty |> not
       
  +        /// <summary>
  +        /// Finds all of the elements nodes of this nodes that match the given set of names
  +        /// </summary>
  +        /// <param name="names">The set of names to match</param>
  +        /// <param name="x">The given node</param>
           let elementsNamed names x = 
               let nameSet = Set.ofSeq (names |> Seq.map (fun (n:string) -> n.ToLowerInvariant()))
               elements (fun x -> name x |> nameSet.Contains) x
       
  +        /// <summary>
  +        /// Returns true if any of the elements of the current node exist in the 
  +        /// given set of names
  +        /// </summary>
  +        /// <param name="names">The set of names to match against</param>
  +        /// <param name="x">The given node</param>
           let hasElements names x = 
               elementsNamed names x |> List.isEmpty |> not
       
  -    
  +        /// <summary>
  +        /// Returns the inner text of the current node
  +        /// </summary>
  +        /// <param name="x">The current node</param>
           let innerText x = 
               let rec innerText' = function
                   | HtmlElement(_,_,_, content) ->
  
positive.code:     [<AutoOpen>]
      module Dsl =
          
          let element name attrs children =
              (fun parent ->  
                  let this = ref None
  
negative.code:         /// Returns the attribute with the given name. If the
          /// attribute does not exist then this will thorw an exception
          /// </summary>
          /// <param name="name">The name of the attribute to select</param>
          /// <param name="x">The current node</param>
          let attribute name x = 
              match tryGetAttribute name x with
              | Some(v) -> v
              | None -> failwithf "Unable to find attribute (%s)" name
  
          ///<summary>
          ///Returns true id the current node has an attribute that
          ///matches both the name and the value
          ///</summary>
  