keywordWins(); echo $child->realWins(); echo $child->inheritedExtension(); echo $child->nearestExtension(); echo $base->nearestExtension(); echo $child->objectFallback(); echo $contract->declaredMethod(); echo $contract->objectFallback(); echo $object->objectFallback(); } function hierarchy_nullable_call(?HierarchyChild $child): void { // A nullable receiver is not statically guaranteed to be an object, so it // must not use the Type::Object fallback. echo $child->objectFallback(); }