code: public synchronized Token peekToken() throws IOException {
          if (mLookahead.empty()) {
              return mLookahead.push(scanToken());
          }
          else {
              return mLookahead.peek();
          }
      }
docs: Returns EOF as the last token.