code: protected int getCharNWS() throws IOException {
      outWS.reset();
  
      outer: for (;;) {
        int ch = getChar();
        switch (ch) {
          case ' ' :
          case '\t' :
          case '\r' :
          case '\n' :
            outWS.write(ch);
            continue outer;
          case '#' :
            getNewlineComment();
            continue outer;
          case '/' :
            getSlashComment();
            continue outer;
          default:
            return ch;
        }
      }
    }
docs: TODO: use subclassing if handling comments is sufficiently slower?