code: @Override
      public ElementReader nextElementReader() throws IOException {
          if (currentReader != null && !currentReader.isClosed()) {
              throw new IllegalStateException(
                      "Previous element stream needs to be closed first.");
          }
          currentReader = nextElementReaderInternal();
          return currentReader;
      }
docs: Returns the reader to read the first group of elements.
  <p>Each group corresponds to an element type. The groups are
  returned in the order given in the file. This is also the
  same order as in the list given by {@link #getElementTypes()}.</p>
  <p>Each returned reader must be closed before the next reader
  is requested with this method.</p>
  @return Reader for the next group of elements or {@code null} if
  there are no more groups.
  @throws IOException if an error occurs during reading.