anchor.diff:      <|> (gitLabPackageIdentifierParser |>> PackageIdentifier.GitLab)
       <|> (adhocPackageIdentifierParser |>> PackageIdentifier.Adhoc)
   
  -  let parse (x : string) : Result<PackageIdentifier, string> = 
  +  let parse (x : string) : Result<PackageIdentifier, string> =
       match run (parser .>> CharParsers.eof) x with
       | Success(result, _, _) -> Result.Ok result
       | Failure(error, _, _) -> Result.Error error
  
positive.code:     return { Owner = owner; Project = project }
    }
  
    let parseBitBucketIdentifier (x : string) = 
      match run (bitBucketPackageIdentifierParser .>> CharParsers.eof) x with
      | Success(result, _, _) -> Result.Ok result
      | Failure(error, _, _) -> Result.Error error
  
negative.code:     return { Owner = owner; Project = project }
    }
  
    let parseAdhocIdentifier (x : string) : Result<AdhocPackageIdentifier, string> =
      match run (adhocPackageIdentifierParser .>> CharParsers.eof) x with
      | Success(result, _, _) -> Result.Ok result
      | Failure(error, _, _) -> Result.Error error
  
  
    let gitHubPackageIdentifierParser = parse {
      do! CharParsers.skipString "github.com/" <|> CharParsers.skipString "github+"
      let! owner = gitHubIdentifierParser
      do! CharParsers.skipString "/"
      let! project = gitHubIdentifierParser
      return { Owner = owner; Project = project }
    }
  
    let parseGitHubIdentifier (x : string) =
      match run (gitHubPackageIdentifierParser .>> CharParsers.eof) x with
      | Success(result, _, _) -> Result.Ok result
      | Failure(error, _, _) -> Result.Error error
  