code: private void append(CharMatcher matcher, TokenBuilder builder)
        throws
        IOException,
        CssException
    {
      while (true)
      {
        Mark mark = reader.mark();
        int ch = reader.next();
        if (ch > -1 && matcher.matches((char) ch))
        {
          builder.append(ch);
        }
        else if (ch == '\\')
        {
          Optional<CssEscape> escape = new CssEscape(reader, builder)
              .create();
          if (escape.isPresent())
          {
            reader.forward(escape.get().render(builder, matcher));
          }
          else
          {
            reader.unread(ch, mark);
            break;
          }
        }
        else
        {
          reader.unread(ch, mark);
          break;
        }
      }
    }
docs: Parse forward and append to the supplied builder all characters that
  match matcher, or until the next character is EOF. Escapes are included
  verbatim if they don't match matcher, else literal.