public static function max($list, callable $iterator = null, $context = null)
    {
        static::associate($iterator, $context);

        !$iterator && $iterator = function ($item) {
            return static::identity($item);
        };

        $max = null;
        $result = null;
        static::each($list, function ($item) use ($iterator, & $max, & $result) {
            $num = $iterator($item);
            if (!isset($max) || $num > $max)
                list($result, $max) = [$item, $num];
        });

        return $result;
    }