public void checkMetadataFiles() throws HandlerException {
   // Add files to Root Directory (if not already present)
   Iterator<ISO9660File> it = config.getFiles().iterator();
   while (it.hasNext()) {
     ISO9660File file = it.next();
     // Metadata Files must conform to 8+3 naming scheme
     if (file != null && !root.getFiles().contains(file)) {
       file.enforce8plus3(true);
       root.addFile(file);
     }
   }
 }
  HashMap doDR(ISO9660File file) throws HandlerException {
    long position = streamHandler.mark();
    HashMap memory = super.doDR(file);

    if (RRIPFactory.MKISOFS_COMPATIBILITY) {
      // RR: Recorded Fields
      int flags =
          RRIPFactory.RR_PX_RECORDED | RRIPFactory.RR_TF_RECORDED | RRIPFactory.RR_NM_RECORDED;
      rripFactory.doRREntry(flags);
    }

    // PX: POSIX File Attributes
    POSIXFileMode fileMode = getPOSIXFileModeForObject(file);
    int fileModes = fileMode.getFileMode();
    rripFactory.doPXEntry(fileModes, 1, 0, 0, 1);

    // TF: Timestamp
    ISO9660ShortDateDataReference date = new ISO9660ShortDateDataReference(file.lastModified());
    rripFactory.doTFEntry(RRIPFactory.TF_MODIFY, date);

    // Compute length up to here
    int length = helper.getDifferenceTo(position);

    // NM: Alternate Name
    length = doNM(helper.getFilenameDataReference(file), length);

    // Update Directory Record Length
    return finalizeDR(memory, length);
  }