code: @Override
      public void close() throws IOException {
          synchronized (lock) {
              decoder = null;
              if (in != null) {
                  in.close();
                  in = null;
              }
          }
      }
docs: Closes this reader. This implementation closes the source InputStream and
  releases all local storage.
  
  @throws java.io.IOException
  if an error occurs attempting to close this reader.