anchor.diff:      let hasNoChild (xel : XElement) =
           not <| xel.DescendantNodes().Any()
   
  +    let always _ = true
  +
  +    // cleanup everything that will be modified
  +    let cproj = XDocument (xproj)
  +
  +    let seekAndDestroy =
  +        [ 
  +            // paket
  +            NsMsBuild + "None", filterPaketReference
  +            NsMsBuild + "Import", filterPaketTarget
  +            NsMsBuild + "Choose", filterPaket
  +
  +            // remove project references
  +            NsMsBuild + "ProjectReference", always
  +            
  +            // remove unknown assembly references
  +            NsMsBuild + "Reference", filterAssemblies project.AssemblyReferences
  +
  +            // remove full-build imports
  +            NsMsBuild + "Import", filterProject
  +            NsMsBuild + "Import", filterPackage
  +            NsMsBuild + "Import", filterFullBuildTargets
  +
  +            // remove nuget stuff
  +            NsMsBuild + "Import", filterNuget
  +            NsMsBuild + "Target", filterNugetTarget
  +            NsMsBuild + "None", filterNugetPackage
  +            NsMsBuild + "Content", filterNugetPackage
  +
  +            // cleanup project
  +            NsMsBuild + "BaseIntermediateOutputPath", always 
  +            NsMsBuild + "SolutionDir", always
  +            NsMsBuild + "RestorePackages", always
  +            NsMsBuild + "NuGetPackageImportStamp", always
  +            NsMsBuild + "ItemGroup", hasNoChild
  +        ]
  +
  +    seekAndDestroy |> Seq.iter (fun (x, y) -> cproj.Descendants(x).Where(y).Remove())
  +    cproj
  +
  +
  +let ConvertProject (xproj : XDocument) (project : Project) =
       let setOutputPath (xel : XElement) =
  -//        let outputDir = sprintf "%s/%s/" MSBUILD_BIN_FOLDER project.Output.toString
           xel.Value <- BIN_FOLDER
   
       let setDocumentation (xel : XElement) =
  
positive.code:     cproj.Descendants(NsMsBuild + "OutputPath") |> Seq.iter setOutputPath
      cproj.Descendants(NsMsBuild + "DocumentationFile") |> Seq.iter setDocumentation
      cproj.Descendants(NsMsBuild + "TargetFrameworkVersion") |> Seq.iter (fun x -> x.Value <- project.FxTarget.toString)
  
      // cleanup project
      cproj.Descendants(NsMsBuild + "BaseIntermediateOutputPath").Remove()
      cproj.Descendants(NsMsBuild + "SolutionDir").Remove()
      cproj.Descendants(NsMsBuild + "RestorePackages").Remove()
      cproj.Descendants(NsMsBuild + "NuGetPackageImportStamp").Remove()
      cproj.Descendants(NsMsBuild + "ItemGroup").Where(hasNoChild).Remove()
  
      // add project references
      for projectReference in project.ProjectReferences do
  
negative.code: 
      let firstItemGroup = cproj.Descendants(NsMsBuild + "ItemGroup").First()
      firstItemGroup.AddBeforeSelf (importFB)
      cproj
  
  let ConvertProjectContent (xproj : XDocument) (project : Project) =
  