code: public HashCalculationResult calculateSuperHash(File file) throws IOException {
          // Ignore files smaller than 0.5kb
          long fileSize = file.length();
          if (fileSize <= FILE_MIN_SIZE_THRESHOLD) {
              logger.debug("Ignored file " + file.getName() + " (" + FileUtils.byteCountToDisplaySize(fileSize) + "): minimum file size is 512B");
              return null;
          }
          if (fileSize >= FILE_MAX_SIZE_THRESHOLD){
              logger.debug("Ignore file {}, ({}): maximum file size is 2GB", file.getName(), FileUtils.byteCountToDisplaySize(fileSize));
              return null;
          }
  
          HashCalculationResult result = null;
          try {
              result = calculateSuperHash(FileUtils.readFileToByteArray(file));
          } catch (OutOfMemoryError e) {
              logger.debug(MessageFormat.format("Failed calculating SHA-1 for file {0}: size too big {1}",
                      file.getAbsolutePath(), FileUtils.byteCountToDisplaySize(fileSize)));
          }
          return result;
      }
docs: Calculates 3 hashes for the given file:
  
  1. Hash of the file without new lines and whitespaces
  2. Hash of the most significant bits of the file without new lines and whitespaces
  3. Hash of the least significant bits of the file without new lines and whitespaces
  
  @param file input
  @return HashCalculationResult with all three hashes
  @throws IOException exception1