code: @Override
      public String nextToken() {
          if (!tokens.isEmpty() && position.get() < tokens.size())
              return tokens.get(position.getAndIncrement());
  
          return nextTokenFromStream();
      }
docs: This method returns next token from prebuffered list of tokens or underlying InputStream
  
  @return next token as String