anchor.diff:                  |> Map.ofList
               selectionSet, varNamesAndTypeRefs)
           |> List.fold (fun acc (selectionSet, varNamesAndTypeRefs) ->
  -            selectionSet |> List.fold (fun acc selection -> checkVariableUsageAllowedOnSelection acc varNamesAndTypeRefs (ref []) selection) acc) Success
  +            selectionSet |> List.fold (fun acc selection -> checkVariableUsageAllowedOnSelection acc varNamesAndTypeRefs visitedFragments selection) acc) Success
   
       let private allValidations =
           [ validateFragmentsMustNotFormCycles
  
positive.code:                 | None -> acc) acc
          match frag.Name with
          | Some fragName when List.contains fragName !visitedFragments -> acc
          | _ -> checkDirectivesInSelectionSet acc schemaInfo fragmentDefinitions path frag.SelectionSet
  
      and private checkDirectivesInValidLocationOnSelection (acc : ValidationResult) (schemaInfo : SchemaInfo) (fragmentDefinitions : FragmentDefinition list) (path : Path) =
          function
          | Field field ->
              let path = field.AliasOrName :: path
  
negative.code:                         then acc
                          else acc @ Error.AsResult(sprintf "Field or alias '%s' has a directive '%s', but this directive location is not supported by the schema definition." field.AliasOrName directive.Name, path)
                      | None -> acc) acc
              checkDirectivesInSelectionSet acc schemaInfo fragmentDefinitions path visitedFragments field.SelectionSet
          | InlineFragment frag -> checkDirectivesInFragment acc schemaInfo fragmentDefinitions path visitedFragments frag
          | FragmentSpread spread ->
              spread.Directives
              |> List.fold (fun acc directive ->
  