anchor.diff:  open MindTouch.Xml
   open FSharp.Data.Json
   open FSharp.Data.Json.Extensions
  +open Microsoft.FSharp.Collections
   
   exception MissingConfig of string
   
  
positive.code:         token <- Some config.["github.token"].AsText
          owner <- Some config.["github.owner"].AsText
          let repos = Some config.["github.repos"].AsText
          
          // Validate
          this.ValidateConfig("github.token", token)
          this.ValidateConfig("github.owner", owner)
          this.ValidateConfig("github.repos", repos)
          
          // Use
          this.CreateWebHooks(repos.Value.Split(','))
  
negative.code: [<DreamServiceConfig("github.token", "string", "A Github's personal API access token")>]
  [<DreamServiceConfig("github.owner", "string", "The owner of the repos we want to watch")>]
  [<DreamServiceConfig("github.repos", "string", "Comma separated list of repos to watch")>]
  [<DreamServiceConfig("public.uri", "string?", @"The end-point's public URI to use to communicate with this service.
  It is optional, used mostly for testing purposes with a public proxy and the service running locally")>]
  type PullRequestService() =
      inherit DreamService()
      let GITHUB_API = Plug.New(new XUri("https://api.github.com"))
      let mutable token = None
      let mutable owner = None
      let mutable publicUri = None
                  
      override this.Start(config : XDoc, container : ILifetimeScope, result : Result) =
          
  