static public function implementsInterface($class, $interfaceName, $message = null, $propertyPath = null)
        {
            $reflection = new \ReflectionClass($class);

            if (!$reflection->implementsInterface($interfaceName)) {
                $message = $message ?: sprintf(
                    'Class "%s" does not implement interface "%s".',
                    static::stringify($class),
                    static::stringify($interfaceName)
                );

                throw static::createException($class, $message, static::INTERFACE_NOT_IMPLEMENTED, $propertyPath, array('interface' => $interfaceName));
            }
        }