anchor.diff:          | _ ->
               (token :?> JValue).Value
   
  -    let launchQuery (serverUrl: string) (query: string) =
  +    let launchQuery (serverUrl: string) (query: string) (queryName: string) =
           async {
               use client = new WebClient()
               let queryJson = Map["query", query] |> JsonConvert.SerializeObject
  
positive.code:             let res = JToken.Parse json |> jsonToObject :?> IDictionary<string,obj>
              if res.ContainsKey("errors") then
                  res.["errors"] :?> string[] |> String.concat "\n" |> failwith
              // TODO: Find a more structured way to get the query name
              let queryName = Regex.Match(query, "^.*?(\w+)").Groups.[1].Value
              return (res.["data"] :?> IDictionary<string,obj>).[queryName]
          }
  
      let createStaticMethod (tdef: ProvidedTypeDefinition) (resType: Type) (serverUrl) =
          let asyncType = typeof<Async<obj>>.GetGenericTypeDefinition().MakeGenericType(resType)
  
negative.code:         m.DefineStaticParameters(sargs, fun methName parameterValues ->
              match parameterValues with 
              | [| :? string as query |] ->
                  let queryName = getQueryName serverUrl query
                  let m2 = ProvidedMethod(methName, [], asyncType, IsStaticMethod = true) 
                  m2.InvokeCode <- fun _ ->
                      <@@ launchQuery serverUrl query queryName @@>
                  tdef.AddMember m2
                  m2
              | _ -> failwith "unexpected parameter values")
  