public static String getTrueCryptExe() throws ExceptionInInitializerError {
   if (SystemUtils.IS_OS_WINDOWS) {
     String s = Configuration.getProperty("truecrypt.home.dir");
     if (s != null && s.length() > 0 && !s.contains("\"")) {
       File f = new File(s);
       if (f.isDirectory() && f.exists()) {
         String tcexe = f.getAbsolutePath() + "/TrueCrypt.exe";
         File tc = new File(tcexe);
         if (tc.isFile() && tc.exists()) {
           return tc.getAbsolutePath();
         }
       }
     }
     throw new ExceptionInInitializerError("Error finding TrueCrypt in " + s);
   }
   if (SystemUtils.IS_OS_LINUX) {
     String tc = "/usr/bin/truecrypt";
     File f = new File(tc);
     if (f.exists()) {
       return "/usr/bin/truecrypt";
     }
     throw new ExceptionInInitializerError("Error finding TrueCrypt in /usr/bin/");
   }
   throw new ExceptionInInitializerError("Unsupported operating system");
 }
  /**
   * Returns a list of all supported drive letters which have been configured to be used for
   * mounting TrueCrypt files. See backmeup.indexer.properties This does not state that a given
   * drive or volume is already in use or not
   */
  public static List<String> getSupportedDriveLetters() {
    if (SystemUtils.IS_OS_LINUX) {
      return generateSupportedDrivesForLinux();
    }

    if (SystemUtils.IS_OS_WINDOWS) {
      return Configuration.getPropertyList("truecrypt.mountable.drives");
    }

    return new ArrayList<>();
  }