protected static function mustBeCallable($arg, $arg_name = null)
    {
        if(!is_callable($arg)){
            throw new \InvalidArgumentException(
                sprintf(
                    '%s must be callable!',
                    is_null($arg_name) ? 'Argument' : $arg_name
                )
            );
        }
    }