protected function validateStringCallbackFor54($callback)
        {
            if (!strstr($callback, '::')) {
                return true;
            }

            list($class, $method) = explode('::', $callback, 2);

            if (!class_exists($class)) {
                throw new Exception(sprintf(
                    'Static method call "%s" refers to a class that does not exist',
                    $callback
                ));
            }

            $r = new ReflectionClass($class);
            if (!$r->hasMethod($method)) {
                throw new Exception(sprintf(
                    'Static method call "%s" refers to a method that does not exist',
                    $callback
                ));
            }
            $m = $r->getMethod($method);
            if (!$m->isStatic()) {
                throw new Exception(sprintf(
                    'Static method call "%s" refers to a method that is not static',
                    $callback
                ));
            }

            // returning a non boolean value may not be nice for a validate method,
            // but that allows the usage of a static string callback without using
            // the call_user_func function.
            return array($class, $method);
        }