public static FluentBuilder <TContext> Do <TContext>(
     this FluentBuilder <TContext> builder,
     string name,
     Func <TContext, BehaviourStatus> action)
 {
     return(builder.PushLeaf(() => new ActionBehaviour <TContext>(name, action)));
 }
 public static FluentBuilder <TContext> Wait <TContext>(
     this FluentBuilder <TContext> builder,
     string name,
     int waitTimeInMilliseconds) where TContext : IClock
 {
     return(builder.PushLeaf(() => new Wait <TContext>(name, waitTimeInMilliseconds)));
 }
 public static FluentBuilder <TContext> Condition <TContext>(
     this FluentBuilder <TContext> builder,
     string name,
     Func <TContext, bool> condition)
 {
     return(builder.PushLeaf(() => new Condition <TContext>(name, condition)));
 }
 public static FluentBuilder <TContext> Subtree <TContext>(
     this FluentBuilder <TContext> builder,
     IBehaviour <TContext> subBehaviour)
 {
     return(builder.PushLeaf(() => subBehaviour));
 }