code: @Override
      <T> T read(Class<T> rootType) {
          try {
              try {
                  return parseRemaining(rootType);
              } finally {
                  input.close();
              }
          } catch (RuntimeException ex) {
              throw ex;
          } catch (Exception ex) {
              throw new RuntimeException(ex);
          }
      }
docs: reads the input stream