Rewritten to use ReflectionMethod