anchor.diff:      let buildDependencyNode (Id, requirement:VersionRequirement) =
           let dep = XElement(ns + "dependency")
           dep.SetAttributeValue(XName.Get "id", Id)
  -        dep.SetAttributeValue(XName.Get "version", requirement.FormatInNuGetSyntax())
  +        let version = requirement.FormatInNuGetSyntax()
  +        if String.IsNullOrEmpty version then () else
  +            dep.SetAttributeValue(XName.Get "version", version)
           dep
   
       let buildDependenciesNode excludedDependencies dependencyList =
           if  List.isEmpty dependencyList then () else
           let d = XElement(ns + "dependencies")
  -        dependencyList 
  +        dependencyList
           |> List.filter (fun d -> Set.contains (fst d) excludedDependencies |> not)
           |> List.iter (buildDependencyNode >> d.Add)
           metadataNode.Add d
  
positive.code:     let addEntryFromFile path source =
          if entries.Contains(path) then () else
          entries.Add path |> ignore
          
          zipFile.CreateEntryFromFile(source,path) |> ignore
  
      let ensureValidTargetName (target:string) =
  
negative.code:         let problemChars = ["@","~~at~~"; "+","~~plus~~"]
  
          let fakeEscapeProblemChars (source:string) =
              problemChars
              |> List.fold (fun (escaped:string) (problem, fakeEscape) ->
                  escaped.Replace(problem,fakeEscape)) source
  
          let unFakeEscapeProblemChars (source:string) =
              problemChars
              |> List.fold (fun (escaped:string) (problem, fakeEscape) ->
                  escaped.Replace(fakeEscape, problem)) source
  
          let escapeTarget (target:string) =
              let escapedTargetParts =
                  target.Replace("\\", "/").Split('/')
                  |> Array.map Uri.EscapeDataString
              String.Join("/" ,escapedTargetParts)
  
          let toUri (escapedTarget:string) =
              let uri1 = Uri(escapedTarget, UriKind.Relative)
              let uri2 = Uri(uri1.GetComponents(UriComponents.SerializationInfoString, UriFormat.SafeUnescaped), UriKind.Relative)
              uri2.GetComponents(UriComponents.SerializationInfoString, UriFormat.UriEscaped)
  
          target
          |> fakeEscapeProblemChars
          |> escapeTarget
          |> unFakeEscapeProblemChars
          |> toUri
  
      let addEntry path writerF =
          if entries.Contains(path) then () else
  