> protected function getDescription(): ?string { return 'Protect your user IDs from being confused with normal ints'; } protected function getFilenames(): Vector { return Vector { 'UserID.php', 'UsingUserID.php', }; } protected function getDocs(): Vector<(string, string)> { return Vector { tuple('Opaque Type Aliasing', 'hack.typealiasing.opaquetypealiasing'), tuple( 'Opaque Type Aliasing with Constraints', 'hack.typealiasing.opaquewithconstraints', ), }; } public function getDemoFilename(): string { return 'demo.php'; } public function getDemoResult(): string { return user_id_main(); } public function getDemoXHP(): ?:xhp { return null; } }