protected function createNumberFormat()
    {
        return new ExpressionFunction(
            'numberFormat',
            function ($number, $decimals = 0, $dec_point = '.', $thousands_sep = ',') {
                return sprintf('( %1$s !== null ? number_format(%1$s, %2$s, %3$s, %4$s)) : null', $number, $decimals, $dec_point, $thousands_sep);
            },
            function ($arguments, $number, $decimals = 0, $dec_point = '.', $thousands_sep = ',') {
                if (null === $number) {
                    return null;
                }

                return number_format($number, $decimals, $dec_point, $thousands_sep);
            }
        );
    }