18    public const FLAG_FORCE_COLLAPSE_ENUM = 0x1;
 
   19    public const FLAG_HAS_ENUM_CONSTRAINT = 0x2;
 
   21    public string $paramName;
 
   22    public int $paramType;
 
   23    public bool $isOptional;
 
   24    public int $flags = 0; 
 
   26    public ?
string $postfix = 
null;
 
   28    private static function baseline(
string $name, 
int $type, 
int $flags, 
bool $optional) : 
self{
 
   30        $result->paramName = $name;
 
   31        $result->paramType = $type;
 
   32        $result->flags = $flags;
 
   33        $result->isOptional = $optional;
 
   37    public static function standard(
string $name, 
int $type, 
int $flags = 0, 
bool $optional = 
false) : 
self{
 
   38        return self::baseline($name, $type, $flags, $optional);
 
   41    public static function postfixed(
string $name, 
string $postfix, 
int $flags = 0, 
bool $optional = 
false) : 
self{
 
   42        $result = self::baseline($name, 0, $flags, $optional);
 
   43        $result->postfix = $postfix;
 
   47    public static function enum(
string $name, 
CommandHardEnum $enum, 
int $flags, 
bool $optional = 
false) : 
self{
 
   48        $result = self::baseline($name, 0, $flags, $optional);
 
   49        $result->enum = $enum;
 
   53    public static function softEnum(
string $name, 
CommandSoftEnum $enum, 
int $flags, 
bool $optional = 
false) : 
self{
 
   54        $result = self::baseline($name, 0, $flags, $optional);
 
   55        $result->enum = $enum;
 
   64        $result->paramName = $paramName;
 
   65        $result->paramType = $paramType;
 
   66        $result->isOptional = $isOptional;
 
   67        $result->flags = $flags;
 
   68        $result->enum = $enum;
 
   69        $result->postfix = $postfix;