code: protected function expect($token, $do_next = true, $try_next = false, $next_on_match = 1) {
  		if ($do_next) {
  			if ($do_next === 1) {
  				$this->next();
  			} else {
  				$this->next_no_whitespace();
  			}
  		}
  
  		if (is_int($token)) {
  			if (($this->token !== $token) && ((!$try_next) || ((($try_next === 1) && ($this->next() !== $token)) || (($try_next === true) && ($this->next_no_whitespace() !== $token))))) {
  				$this->addError('Unexpected "'.$this->getTokenString().'"');
  				return false;
  			}
  		} else {
  			if (($this->doc[$this->pos] !== $token) && ((!$try_next) || (((($try_next === 1) && ($this->next() !== self::TOK_NULL)) || (($try_next === true) && ($this->next_no_whitespace() !== self::TOK_NULL))) && ($this->doc[$this->pos] !== $token)))) {
  				$this->addError('Expected "'.$token.'", but found "'.$this->getTokenString().'"');
  				return false;
  			}
  		}
  
  		if ($next_on_match) {
  			if ($next_on_match === 1) {
  				$this->next();
  			} else {
  				$this->next_no_whitespace();
  			}
  		}
  		return true;
  	}
docs: Expect a specific token or character. Adds error if token doesn't match.
  @param string|int $token Character or token to expect
  @param bool|int $do_next Go to next character before evaluating. 1 for next char, true to ignore whitespace
  @param bool|int $try_next Try next character if current doesn't match. 1 for next char, true to ignore whitespace
  @param bool|int $next_on_match Go to next character after evaluating. 1 for next char, true to ignore whitespace
  @return bool