code: protected ParserResults processEitherSpec(final ParserData parserData, final boolean processProcesses) {
          try {
              final Pair<String, String> keyValuePair = ProcessorUtilities.getAndValidateKeyValuePair(parserData.getLines().peek());
              final String key = keyValuePair.getFirst();
  
              if (key.equalsIgnoreCase(CommonConstants.CS_CHECKSUM_TITLE) || key.equalsIgnoreCase(CommonConstants.CS_ID_TITLE)) {
                  return processEditedSpec(parserData, processProcesses);
              } else {
                  return processNewSpec(parserData, processProcesses);
              }
          } catch (InvalidKeyValueException e) {
              log.error(ProcessorConstants.ERROR_INCORRECT_FILE_FORMAT_MSG, e);
              return new ParserResults(false, null);
          }
      }
docs: Process Content Specification that is either NEW or EDITED. That is that it should start with a CHECKSUM and ID or a Title.
  
  @param parserData
  @param processProcesses If processes should be processed to populate the relationships.
  @return True if the content spec was processed successfully otherwise false.