code: @NotNull
      private static String getReaderString(final @NotNull RandomAccessReader reader, final int makernoteOffset, final int bytesRequested) throws IOException
      {
          try {
              return reader.getString(makernoteOffset, bytesRequested, Charsets.UTF_8);
          } catch(BufferBoundsException e) {
              return "";
          }
      }
docs: Read a given number of bytes from the stream
  
  This method is employed to "suppress" attempts to read beyond end of the
  file as may happen at the beginning of processMakernote when we read
  increasingly longer camera makes.
  
  Instead of failing altogether in this context we return an empty string
  which will fail all sensible attempts to compare to makes while avoiding
  a full-on failure.