code: public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
          CharSequence charContent = getCharContent(ignoreEncodingErrors);
          if (charContent == null)
              throw new UnsupportedOperationException();
          if (charContent instanceof CharBuffer) {
              CharBuffer buffer = (CharBuffer)charContent;
              if (buffer.hasArray())
                  return new CharArrayReader(buffer.array());
          }
          return new StringReader(charContent.toString());
      }
docs: Wraps the result of {@linkplain #getCharContent} in a Reader.
  Subclasses can change this behavior as long as the contract of
  {@link FileObject} is obeyed.
  
  @param  ignoreEncodingErrors {@inheritDoc}
  @return a Reader wrapping the result of getCharContent
  @throws IllegalStateException {@inheritDoc}
  @throws UnsupportedOperationException {@inheritDoc}
  @throws IOException {@inheritDoc}