> protected function getDescription(): ?string { return 'When you have values with unknown types, it is useful to make '. 'some runtime assertions and have the type checker understand. This '. 'recipe demonstrates one approach.'; } protected function getFilenames(): Vector { return Vector { 'Assert.php', }; } protected function getDocs(): Vector<(string, string)> { return Vector{ tuple ('Mixed Types', 'hack.annotations.mixedtypes'), tuple ('Type Inference', 'hack.otherrulesandfeatures.typeinference'), }; } public function getDemoFilename(): string { return 'demo.php'; } public function getDemoResult(): string { return assert_main(); } public function getDemoXHP(): ?:xhp { return null; } }