docs: @NotNull
      public static Metadata readMetadata(@NotNull final InputStream inputStream, final long streamLength, final FileType fileType) throws IOException, ImageProcessingException
      {
          switch (fileType) {
              case Jpeg:
                  return JpegMetadataReader.readMetadata(inputStream);
              case Tiff:
              case Arw:
              case Cr2:
              case Nef:
              case Orf:
              case Rw2:
                  return TiffMetadataReader.readMetadata(new RandomAccessStreamReader(inputStream, RandomAccessStreamReader.DEFAULT_CHUNK_LENGTH, streamLength));
              case Psd:
                  return PsdMetadataReader.readMetadata(inputStream);
              case Png:
                  return PngMetadataReader.readMetadata(inputStream);
              case Bmp:
                  return BmpMetadataReader.readMetadata(inputStream);
              case Gif:
                  return GifMetadataReader.readMetadata(inputStream);
              case Ico:
                  return IcoMetadataReader.readMetadata(inputStream);
              case Pcx:
                  return PcxMetadataReader.readMetadata(inputStream);
              case WebP:
                  return WebpMetadataReader.readMetadata(inputStream);
              case Raf:
                  return RafMetadataReader.readMetadata(inputStream);
              case Avi:
                  return AviMetadataReader.readMetadata(inputStream);
              case Wav:
                  return WavMetadataReader.readMetadata(inputStream);
              case Mov:
                  return QuickTimeMetadataReader.readMetadata(inputStream);
              case Mp4:
                  return Mp4MetadataReader.readMetadata(inputStream);
              case Mp3:
                  return Mp3MetadataReader.readMetadata(inputStream);
              case Eps:
                  return EpsMetadataReader.readMetadata(inputStream);
              case Heif:
                  return HeifMetadataReader.readMetadata(inputStream);
              case Unknown:
                  throw new ImageProcessingException("File format could not be determined");
              default:
                  return new Metadata();
          }
      }