private static function createFromNumericNumerator($numerator, $denominator)
    {
        if (is_null($denominator)) {
            return self::createCorrectRational($numerator, 1);
        }

        if (is_numeric($denominator)) {
            return self::createCorrectRational($numerator, $denominator);
        }

        if ($denominator instanceof IntType) {
            return self::createCorrectRational($numerator, $denominator());
        }

        self::throwCreateException($numerator, $denominator);
    }