anchor.diff:      -..- +.optionalMany directives
       -%> fun name dirs ->
           { FragmentName = name; Directives = dirs }
  +
  +(**
  +
  +*)
   
   type TypeName = string
   
  
positive.code:     %% '(' -..- +.(qty.[1..] /. ignored * withSource argument) -- ')'
      -%> auto
  
  type Directive =
      {
          DirectiveName : string
          Arguments : Argument ListWithSource
      }
  
  let directives =
      let directive =
          %% '@' -- +.name
  
negative.code: 
  Now that we have values, let's keep building up to full queries.
  
  An [argument](https://facebook.github.io/graphql/#sec-Language.Arguments)
  is a named value. It is found in an argument list, which looks like this:
      (arg1: value1, arg2: value2)
  Remember, however, that the commas are entirely optional, since they are ignored tokens.
  
  *)
  
  /// Represents an `argName: argValue` pair
  type Argument =
      {
          ArgumentName : string
          ArgumentValue : Value
      }
  
  /// Parses an argument list wrapped in parentheses. Per the GraphQL spec,
  /// this list must contain at least one argument.
  let arguments =
      let argument =
          %% +.name
  