code: func (rule *overlappingFieldsCanBeMergedRule) collectConflictsBetween(conflicts []conflict, parentFieldsAreMutuallyExclusive bool,
  	fieldsInfo1 *fieldsAndFragmentNames,
  	fieldsInfo2 *fieldsAndFragmentNames) []conflict {
  	// A field map is a keyed collection, where each key represents a response
  	// name and the value at that key is a list of all fields which provide that
  	// response name. For any response name which appears in both provided field
  	// maps, each field from the first field map must be compared to every field
  	// in the second field map to find potential conflicts.
  	for _, responseName := range fieldsInfo1.fieldsOrder {
  		fields1, ok1 := fieldsInfo1.fieldMap[responseName]
  		fields2, ok2 := fieldsInfo2.fieldMap[responseName]
  		if !ok1 || !ok2 {
  			continue
  		}
  		for i := 0; i < len(fields1); i++ {
  			for k := 0; k < len(fields2); k++ {
  				conflict := rule.findConflict(parentFieldsAreMutuallyExclusive, responseName, fields1[i], fields2[k])
  				if conflict != nil {
  					conflicts = append(conflicts, *conflict)
  				}
  			}
  		}
  	}
  	return conflicts
  }
docs: // Collect all Conflicts between two collections of fields. This is similar to,
  // but different from the `collectConflictsWithin` function above. This check
  // assumes that `collectConflictsWithin` has already been called on each
  // provided collection of fields. This is true because this validator traverses
  // each individual selection set.