anchor.diff:  
           new ProjectFile(projectFileName,document.OuterXml)
   
  +    /// Removes a file from the Content nodes
  +    member x.RemoveContentFile fileName =        
  +        let document = XMLDoc documentContent // we create a copy and work immutable
  +        let node = 
  +            getContentNodes document 
  +            |> List.filter (fun node -> getFileAttribute node = fileName) 
  +            |> Seq.last  // we remove the last one to make easier to remove duplicates
  +
  +        node.ParentNode.RemoveChild node |> ignore
  +
  +        new ProjectFile(projectFileName,document.OuterXml)
  +
       /// All files which are in "Compile" sections
       member x.Files = getCompileNodes document |> List.map getFileAttribute
  +    
  +        /// All files which are in "Content" sections
  +    member x.ContentFiles = getContentNodes document |> List.map getFileAttribute
   
       /// Finds duplicate files which are in "Compile" sections
       member this.FindDuplicateFiles() = 
  
positive.code:     let getCompileNodes (document:XmlDocument) =         
          [for node in document.SelectNodes(compileNodesXPath,nsmgr) -> node]
  
      let getFileAttribute (node:XmlNode) = node.Attributes.["Include"].InnerText
  
      /// Read a Project from a FileName
  
negative.code:                 if not (includeExistsF(includePath)) then yield filePath }
      missingFiles
      |> Seq.fold (fun (project:ProjectFile) file -> project.RemoveFile(file)) project
      
      let removeContentNodesWithMissingFiles includeExistsF (project:ProjectFile) =
      let projectDir = IO.Path.GetDirectoryName(project.ProjectFileName)
      let missingFiles =
          seq { for filePath in project.ContentFiles do
                  // We have to normalize the path, because csproj can have win style directory separator char on Mono too
                  // Xbuild handles them, so we do too http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/#paths 
                  let includePath = Globbing.normalizePath (IO.Path.Combine([|projectDir; filePath|]))
                  if not (includeExistsF(includePath)) then yield filePath }
      missingFiles
      |> Seq.fold (fun (project:ProjectFile) file -> project.RemoveContentFile(file)) project
  
  /// Removes projects Compile nodes that have Include attributes pointing to files missing from the file system.  Saves updated projects.
  let RemoveCompileNodesWithMissingFiles project =
      let newProject = removeCompileNodesWithMissingFiles System.IO.File.Exists (ProjectFile.FromFile project)
      newProject.Save()
  
  /// Removes projects Content nodes that have Include attributes pointing to files missing from the file system.  Saves updated projects.
  let RemoveContentNodesWithMissingFiles project =
      let newProject = removeContentNodesWithMissingFiles System.IO.File.Exists (ProjectFile.FromFile project)
      newProject.Save()
  
           
  