anchor.diff:                  | _ when selection.FragmentSpreadName.IsSome -> AstError.AsResult(sprintf "Fragment '%s' has type kind %s, but fragments can only be defined in UNION, OBJECT or INTERFACE types." selection.FragmentSpreadName.Value (fragType.Kind.ToString()), selection.Path)
                   | _ -> AstError.AsResult(sprintf "Inline fragment has type kind %s, but fragments can only be defined in UNION, OBJECT or INTERFACE types." (fragType.Kind.ToString()), selection.Path)
               | None -> Success
  -        fragmentTypeValid @@ (selection.SelectionSet |> collectResults checkFragmentOnCompositeType)
  +        fragmentTypeValid @@ (selection.NonCyclicSelectionSet |> collectResults checkFragmentOnCompositeType)
   
       let internal validateFragmentsOnCompositeTypes (ctx : ValidationContext) =
           ctx.Definitions
  -        |> List.collect (fun def -> def.SelectionSet)
  +        |> List.collect (fun def -> def.NonCyclicSelectionSet)
           |> collectResults checkFragmentOnCompositeType
   
       let internal validateFragmentsMustBeUsed (ctx : ValidationContext) =
  
positive.code:             | NonNullType inner -> x.TryGetInputType(inner) |> Option.map IntrospectionTypeRef.NonNull
  
      /// Contains information about the selection in a field or a fragment, with related GraphQL schema type information.
      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).
            mutable SelectionSet : SelectionInfo list
            /// Contains the reference to tye field type in the schema.
            FieldType : IntrospectionTypeRef option
            /// Contains the reference to the parent type of the current field in the schema.
            ParentType : IntrospectionType
            /// Contains the reference to the fragment type of the current field in the schema.
            FragmentType : IntrospectionType option
            /// In case this field is part of a selection of a fragment spread, gets the name of the fragment spread.
            FragmentSpreadName : string option
            /// Contains information about the input values of the field in the schema.
            InputValues : IntrospectionInputVal [] option
            /// Contains the path of the field in the document.
            Path : Path }
  
negative.code: 
      let internal validateRequiredArguments (ctx : ValidationContext) =
          ctx.Definitions
          |> collectResults (fun def -> def.NonCyclicSelectionSet |> collectResults (checkRequiredArguments ctx.Schema))
  
      let internal validateFragmentNameUniqueness (ctx : ValidationContext) =
          let counts = Dictionary<string, int>()
  