public static function compare(
        ComparableInterface $first = null,
        ComparableInterface $second = null,
        $nullGreater = false
    ) {
        if ($first === $second) {
            return self::EQUAL;
        } elseif (null === $first) {
            return $nullGreater
                ? self::FIRST_GT_SECOND
                : self::FIRST_LT_SECOND;
        } elseif (null === $second) {
            return $nullGreater
                ? self::FIRST_LT_SECOND
                : self::FIRST_GT_SECOND;
        }

        return $first->compareTo($second);
    }