code: public CSSToken generateEOFRecover() {
  
          CSSToken t = null;
  
          if (ls.aposOpen) {
              ls.aposOpen = false;
              t = new CSSToken(typeMapper.get(APOS), ls, lexerTypeMapper);
              t.setText("'");
          } else if (ls.quotOpen) {
              ls.quotOpen = false;
              t = new CSSToken(typeMapper.get(QUOT), ls, lexerTypeMapper);
              t.setText("\"");
          } else if (ls.parenNest != 0) {
              ls.parenNest--;
              t = new CSSToken(typeMapper.get(RPAREN), ls, lexerTypeMapper);
              t.setText(")");
          } else if (ls.curlyNest != 0) {
              ls.curlyNest--;
              t = new CSSToken(typeMapper.get(RCURLY), ls, lexerTypeMapper);
              t.setText("}");
          } else if (ls.sqNest != 0) {
              ls.sqNest--;
              t = new CSSToken(typeMapper.get(RBRACKET), ls, lexerTypeMapper);
              t.setText("]");
          }
  
          log.debug("Recovering from EOF by {}", t.getText());
          return t;
      }
docs: Recovers from unexpected EOF by preparing
  new token