anchor.diff:      type SelectionInfo =
           { /// Contains the information about the field inside the selection.
             Field : Field
  -          /// Contains the selection of the field (in case the field is an Object, Interface, or Union type.
  +          /// Contains the selection of the field (in case the field is an Object, Interface, or Union type).
             mutable SelectionSet : SelectionInfo list
             /// Contains the reference to tye field type in the schema.
             FieldType : IntrospectionTypeRef option
  
positive.code:         let argumentsValid =
              selection.Field.Arguments
              |> collectResults (fun arg ->
                  let args =
                      metaTypeFields.TryFind(selection.Field.Name)
                      |> Option.orElseWith (fun () -> selection.InputValues |> Option.map (Array.map (fun x -> x.Name)))
                  match args |> Option.bind (Array.tryFind (fun x -> x = arg.Name)) with
                  | Some _ -> Success
                  | None -> AstError.AsResult(sprintf "Field '%s' of type '%s' does not have an input named '%s' in its definition." selection.Field.Name selection.FragmentOrParentType.Name arg.Name, selection.Path))
          let directivesValid =
  
negative.code:         namedTypes.ToSeq() |> Seq.fold (fun acc (_, namedDef) -> acc @@ validateType namedDef) Success
  
  module Ast =
      type MetaTypeFieldInfo =
          { Name : string
            ArgumentNames : string [] }
  
      let private metaTypeFields = 
          [| { Name = "__type"; ArgumentNames = [|"name"|] }
             { Name = "__schema"; ArgumentNames = [||] }
             { Name = "__typename"; ArgumentNames = [||] } |]
          |> Array.map (fun x -> x.Name, x)
          |> Map.ofArray
  
      type SchemaInfo =
  