public IBehavior Add(IBehavior behavior) { //validate if (behavior == null) { return(behavior); } //add or replace _behaviors.AddOrUpdate(behavior.GetType(), behavior, (i, e) => { RemoveDisable(e); return(behavior); }); //enable behavior.Enable(_arm); //add workflow AddWorkflow(behavior as IWorkflow); return(behavior); }