docs: protected final Set<String> inferThriftFieldIds()
      {
          Set<String> fieldsWithConflictingIds = new HashSet<>();
  
          // group fields by explicit name or by name extracted from field, method or property
          Multimap<String, FieldMetadata> fieldsByExplicitOrExtractedName = Multimaps.index(fields, getOrExtractThriftFieldName());
          inferThriftFieldIds(fieldsByExplicitOrExtractedName, fieldsWithConflictingIds);
  
          // group fields by name extracted from field, method or property
          // this allows thrift name to be set explicitly without having to duplicate the name on getters and setters
          // todo should this be the only way this works?
          Multimap<String, FieldMetadata> fieldsByExtractedName = Multimaps.index(fields, extractThriftFieldName());
          inferThriftFieldIds(fieldsByExtractedName, fieldsWithConflictingIds);
  
          return fieldsWithConflictingIds;
      }