code: func (rule *overlappingFieldsCanBeMergedRule) findConflictsWithinSelectionSet(parentType Named, selectionSet *ast.SelectionSet) []conflict {
  	conflicts := []conflict{}
  
  	fieldsInfo := rule.getFieldsAndFragmentNames(parentType, selectionSet)
  
  	// (A) Find find all conflicts "within" the fields of this selection set.
  	// Note: this is the *only place* `collectConflictsWithin` is called.
  	conflicts = rule.collectConflictsWithin(conflicts, fieldsInfo)
  
  	// (B) Then collect conflicts between these fields and those represented by
  	// each spread fragment name found.
  	for i := 0; i < len(fieldsInfo.fragmentNames); i++ {
  
  		conflicts = rule.collectConflictsBetweenFieldsAndFragment(conflicts, false, fieldsInfo, fieldsInfo.fragmentNames[i])
  
  		// (C) Then compare this fragment with all other fragments found in this
  		// selection set to collect conflicts between fragments spread together.
  		// This compares each item in the list of fragment names to every other item
  		// in that same list (except for itself).
  		for k := i + 1; k < len(fieldsInfo.fragmentNames); k++ {
  			conflicts = rule.collectConflictsBetweenFragments(conflicts, false, fieldsInfo.fragmentNames[i], fieldsInfo.fragmentNames[k])
  		}
  	}
  	return conflicts
  }
docs: // Find all conflicts found "within" a selection set, including those found
  // via spreading in fragments. Called when visiting each SelectionSet in the
  // GraphQL Document.