anchor.diff:  
   "Build"
     ==> "NuGet"
  -  // ==> "ValidateVersionBump"
  +  ==> "ValidateVersionBump"
     ==> "PublishNuGet"
     ==> "Release"
   
  
positive.code:   let (computedVersion, computedMagnitude) = SynVer.SurfaceArea.bump (string oldVersion) oldSurfaceArea newSurfaceArea
    let parsedComputedVersion = Paket.PublicAPI.ParseSemVer computedVersion
    let apiDiffs = SynVer.SurfaceArea.diff oldSurfaceArea newSurfaceArea |> String.concat "\n"
    // todo: expand on this comparison based on the magnitudes
    if parsedComputedVersion <> intendedVersion
    then
      failwithf """Version bump invalid.
    Version packaged was %A
    Version computed due to API diffs was %A
  
negative.code:   )
  )
  
  let anchor (path: string) =
    System.IO.Path.GetFullPath(Path.Combine(__SOURCE_DIRECTORY__, path))
  
  let bumpMajor (semver: Paket.SemVerInfo) =
    { semver with Major = semver.Major + 1u
                  Minor = 0u
                  Patch = 0u }
  
  let bumpMinor (semver: Paket.SemVerInfo) =
    { semver with Minor = semver.Minor + 1u
                  Patch = 0u }
  
  let bumpPatch (semver: Paket.SemVerInfo) =
    { semver with Patch = semver.Patch + 1u }
  
  let (|WithinRange|OutsideRange|) (leftSemver, (magnitude: SynVer.Version), rightSemver) =
    let allowedMin =
      match magnitude with
      | SynVer.Version.Major -> bumpMajor leftSemver
      | SynVer.Version.Minor -> bumpMinor leftSemver
      | SynVer.Version.Patch -> bumpPatch leftSemver
  
    if rightSemver < allowedMin || rightSemver < leftSemver then OutsideRange else WithinRange
  
  Target.create "ValidateVersionBump" (fun _ ->
    let intendedVersion = Paket.PublicAPI.ParseSemVer release.NugetVersion
  