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(); }