anchor.diff:              match x with
               | OperationDefinitionInfo x -> x.Definition.Directives
               | FragmentDefinitionInfo x -> x.Definition.Directives
  -        /// Gets the selection set that does not make cyclic references to a specific Fragment.
  -        member x.NonCyclicSelectionSet = x.SelectionSet |> List.choose (function SelectionField x -> Some x | _ -> None)
       
       /// The validation  context used to run validations against a parsed document.
       /// It should have the schema type information, the original document and the definition information about the original document.
  
positive.code:             | _ -> Success)
  
      let rec private checkVariableUsageAllowedOnSelection (varNamesAndTypeRefs : Map<string, VariableDefinition * IntrospectionTypeRef>) (visitedFragments : string list) (selection : SelectionInfo) =
          let inputs = Option.defaultValue [||] selection.InputValues
          match selection.FragmentSpreadName with
          | Some spreadName when List.contains spreadName visitedFragments -> Success
          | _ ->
  
negative.code:           /// In case this field is part of a selection of a fragment spread, gets the name of the fragment spread.
            FragmentSpreadName : string option
            /// Contains the selection info of this field, if it is an Object, Interface or Union type.
            SelectionSet : SelectionInfo list
            /// In case the schema definition fo this field has input values, gets information about the input values of the field in the schema.
            InputValues : IntrospectionInputVal []
            /// Contains the path of the field in the document.
            Path : Path }
          /// If the field has an alias, return its alias. Otherwise, returns its name.
  