public function hasMethod(ClassReflection $classReflection, string $methodName) : bool
{
$traitNames = $this->getTraitNames($classReflection->getNativeReflection());
if (!$classReflection->isSubclassOf(Object::class) && !in_array(\Nette\SmartObject::class, $traitNames, true)) {
return false;
}
if (substr($methodName, 0, 2) !== 'on' || strlen($methodName) <= 2) {
return false;
}
return $classReflection->hasProperty($methodName) && $classReflection->getProperty($methodName)->isPublic();
}