public function make($filter)
    {
        if ($filter instanceof Filter)
        {
            return clone $filter;
        }
        
        $filter = isset($this->aliases[$filter]) ? $this->aliases[$filter] : $filter;

        if (is_array($filter))
        {
            list($filter, $callback) = array(current($filter), next($filter));
        }

        // If the filter was aliased and the value of the array was a callable closure then
        // we'll return and fire the callback on the filter instance so that any arguments
        // can be set for the filters constructor.
        $filter = new Filter($this->log, $filter, $this->nodePaths, $this->appEnvironment);

        if (isset($callback) and is_callable($callback))
        {
            call_user_func($callback, $filter);
        }

        return $filter;
    }