$obj->classBX(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::classBX(), did you mean classB()?', ); Assert::exception( fn() => $obj->classCX(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::classCX(), did you mean classC()?', ); Assert::exception( fn() => $obj->classS1X(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::classS1X(), did you mean classS1()?', ); Assert::exception( fn() => $obj->classS2X(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::classS2X(), did you mean classS2()?', ); Assert::exception( fn() => $obj->classAX(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::classAX(), did you mean classA()?', ); Assert::exception( fn() => $obj->traitCX(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::traitCX(), did you mean traitC()?', ); Assert::exception( fn() => $obj->traitBX(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::traitBX(), did you mean traitB()?', ); Assert::exception( fn() => $obj->traitAX(), Nette\MemberAccessException::class, 'Call to undefined method ChildClass::traitAX(), did you mean traitA()?', );