anchor.diff:  
           let projectFile = movingNode.Project.FileName.ToString()
   
  -        ///partially apply the default namespace of msbuild to xs
  -        let xd = xs "http://schemas.microsoft.com/developer/msbuild/2003"
  +        let descendantsNamed name ancestor = 
  +            ///partially apply the default namespace of msbuild to xs
  +            let xd = xs "http://schemas.microsoft.com/developer/msbuild/2003"
  +            descendants (xd name) ancestor
   
           // If the "Compile" element contains a "Link" element then it is a linked file,
           // so use that value for comparison when finding the node.
           let nodeName (node:XElement) = 
  -           let link = node.Descendants(xd "Link") |> firstOrNone
  +           let link = node |> descendantsNamed "Link" |> firstOrNone
              match link with
              | Some l -> l.Value
              | None   -> node |> attributeValue "Include"
  
positive.code:         let xdoc = XElement.Load(file)
          file.Close()
  
          //get all the compile nodes from the project file
          let compileNodes = xdoc |> descendants (xd "Compile")
  
          let findByIncludeFile name seq = 
              seq |> where (fun elem -> nodeName elem = name )
  
negative.code:         
          let getFullName (pf:ProjectFile) = pf.ProjectVirtualPath.ToString().Replace("/", "\\")
  
          let movingElement = movableNodes |> findByIncludeFile (getFullName movingNode)
          let moveToElement = movableNodes |> findByIncludeFile (getFullName moveToNode)
  
          let addFunction (moveTo:XElement) (position:DropPosition) =
              match position with
  