code: @Override
    public void close() throws XMLStreamException {
  
      try {
        this.mainReader.close();
      } finally {
        try {
          if (this.includeReader != null) {
            this.includeReader.close();
          }
        } finally {
          try {
            this.inputStream.close();
          } catch (IOException e) {
            throw new XMLStreamException(e);
          }
        }
      }
    }
docs: {@inheritDoc}
  
  <b>ATTENTION:</b><br>
  This method violates the StAX API and closes the underlying input stream!<br>
  The StAX API has a bad design mistake about the {@link #close()} method NOT to close the underlying input
  stream. Besides the {@link XMLStreamReader} the user also has to manage the input stream what will lead
  in additional programming mistakes ending up with open file-handles. Since many {@link XMLStreamReader}
  implementations have an empty body for this method developers, may tend to take it NOT as serious as e.g.
  {@link InputStream#close()}. Since this implementation has to open new streams behind the scenes the only
  senseful implementation of this method is to close the underlying stream (and recursively closing all
  included streams). You have to ensure this reader is safely closed via this method so remaining open
  streams are closed.