public static function enable()
    {
        Builder::macro(self::MACRO_METHOD, function (Fluent $builder, callable $callback = null) {
            $tree = new static($builder);

            if (is_callable($callback)) {
                call_user_func($callback, $tree);
            }

            return $tree;
        });

        NestedSet::enable();
        MaterializedPath::enable();
        ClosureTable::enable();
    }