public static function compare($modelType, $propertyName, $compareWith, $errorMessage = null) {
        if (!self::canAnnotate($modelType)) {
            return;
        }

        if (empty($propertyName)) {
            throw new \Exception('$propertyName must not be empty.');
        }

        if (empty($compareWith)) {
            throw new \Exception('$compareWith must not be empty.');
        }

        if ($propertyName === $compareWith) {
            throw new \Exception('The property names must be different.');
        }

        self::makeDataAnnotation($propertyName);

        self::$annotations[$propertyName]->compareWith = array($compareWith, $errorMessage);
    }