code: private void _ws() throws
        IOException
    {
      builder.type = Type.S;
      // no need to preserve exact whitespace
      // but append an S char to keep the token
      // contract of always having a value
      builder.append(' ');
      reader.forward(NOT_WHITESPACE);
  
      if (debug)
      {
        int nxt = reader.peek();
        checkArgument(WHITESPACE.matches((char) reader.curChar));
        if (nxt > -1)
        {
          checkArgument(NOT_WHITESPACE.matches((char) nxt));
        }
      }
    }
docs: Whitespace w ::= wc wc ::= #x9 | #xA | #xC | #xD | #x20