docs: public IonType next()
      {
          if (!hasNext()) {
              return null;
          }
          if (_value_type == null && _scanner.isUnfinishedToken()) {
              try {
                  token_contents_load(_scanner.getToken());
              }
              catch (IOException e) {
                  throw new IonException(e);
              }
          }
          _has_next_called = false;
          return _value_type;
      }