code: private int processDataValue(final int fromIndex) {
          final char[] identifier = getIdentifier(fromIndex);
          final int dataStart = fromIndex + identifierLength;
          final int dataLength = buffer.distanceTo(DATA_SEPARATORS, dataStart);
          final String data = buffer.stringAt(dataStart, dataLength, charset);
          fieldHandler.data(identifier, data);
          return dataStart + dataLength;
      }
docs: Reads the field value starting at {@code fromIndex} and calls
  {@link FieldHandler#data(char[], String)}.
  
  @param fromIndex index at which the identifier of the field value starts.
  @return the index of the end of field marker. This is the position write
  after the data field in the buffer. It can be used as the next starting
  position when processing multiple subfields.