'Building', self::Complete => 'Complete', self::Incomplete => 'Incomplete', }; } public function isConsumable(): bool { return $this === self::Complete; } public function isTerminal(): bool { return in_array($this, [self::Complete, self::Incomplete], true); } /** * @return array */ public static function values(): array { return array_map( static fn (self $state): string => $state->value, self::cases(), ); } }