value; } /** @return self::TOKEN_TYPE_* */ public function type(): int { return $this->type; } /** @param self::TOKEN_TYPE_* ...$types */ public function isOfType(int ...$types): bool { return in_array($this->type, $types, true); } public function hasExtraWhitespace(): bool { return str_contains($this->value(), ' ') || str_contains($this->value(), "\n") || str_contains($this->value(), "\t"); } public function withValue(string $value): self { return new self($this->type(), $value); } }