public static void Parallel <TTickData, TState>(
            this BehaviourTreeNodeDecoratorBuilder <TTickData, TState> builder, string name, int successCount, int failureCount,
            Action <BehaviourTreeNodeSequenceBuilder <TTickData, TState> > config)
        {
            var newNode = new ParallelNode <TTickData, TState>(name, successCount, failureCount);

            builder.Decorate(newNode, config);
        }
 public static void Condition <TTickData, TState>
     (this BehaviourTreeNodeDecoratorBuilder <TTickData, TState> builder,
     string name,
     Func <TTickData, TState, bool> predicate)
 {
     builder.Do(name,
                (tick, state) => predicate(tick, state) ? BehaviourTreeState.Success : BehaviourTreeState.Failure);
 }
        public static void Succeeder <TTickData, TState>
            (this BehaviourTreeNodeDecoratorBuilder <TTickData, TState> builder,
            string name,
            Action <BehaviourTreeNodeDecoratorBuilder <TTickData, TState> > config
            )
        {
            var newNode = new SucceederNode <TTickData, TState>(name);

            builder.Decorate(newNode, config);
        }
        public static void Do <TTickData, TState>
            (this BehaviourTreeNodeDecoratorBuilder <TTickData, TState> builder,
            string name,
            Func <TTickData, TState, BehaviourTreeState> action
            )
        {
            var newNode = new ActionNode <TTickData, TState>(name, action);

            builder.Decorate(newNode);
        }
        public static void RandomSelect <TTickData, TState>
            (this BehaviourTreeNodeDecoratorBuilder <TTickData, TState> builder,
            string name,
            Action <BehaviourTreeNodeRandomBuilder <TTickData, TState> > config,
            bool stateful = false
            )
        {
            var newNode = new RandomSelectNode <TTickData, TState>(name, stateful);

            builder.Decorate(newNode, config);
        }
        public static void Sequence <TTickData, TState>
            (this BehaviourTreeNodeDecoratorBuilder <TTickData, TState> builder,
            string name,
            Action <BehaviourTreeNodeSequenceBuilder <TTickData, TState> > config,
            bool stateful = false
            )
        {
            var newNode = new SequenceNode <TTickData, TState>(name, stateful);

            builder.Decorate(newNode, config);
        }