public IReadOnlyList <FieldSelection> CollectFields( ObjectType objectType, SelectionSetNode selectionSet, Path path) { if (objectType == null) { throw new ArgumentNullException(nameof(objectType)); } if (selectionSet == null) { throw new ArgumentNullException(nameof(selectionSet)); } IReadOnlyList <FieldSelection> fields = _cachedQuery.GetOrCollectFields( objectType, selectionSet, () => _fieldCollector.CollectFields( objectType, selectionSet, path)); var visibleFields = new List <FieldSelection>(); int vi = 0; for (int i = 0; i < fields.Count; i++) { FieldSelection field = fields[i]; if (field.IsVisible(Variables)) { visibleFields.Add( field.ResponseIndex == vi ? field : field.WithResponseIndex(vi)); vi++; } } return(visibleFields); }