public void AddRung(DelegatePredicate <ISubject> predicates, DelegateClosure <IExtendedSubject> executor)
 {
     try {
         _lockRung.AcquireWriterLock(-1);
         _rungs.Add(new Rung(predicates, executor));
     }
     finally {
         _lockRung.ReleaseLock();
     }
 }
 public void AssignExecutor(DelegateClosure <IExtendedSubject> executor)
 {
     try {
         _lockExecutor.AcquireWriterLock(-1);
         _clientExecutor = executor;
     }
     finally {
         _lockExecutor.ReleaseLock();
     }
 }
 public ClosureRemoveProxy(IList <type> parent, DelegateClosure <type> closure) :
     base(parent)
 {
     _closure = closure;
 }
 public Rung(DelegatePredicate <ISubject> predicate, DelegateClosure <IExtendedSubject> executor)
 {
     _predicates = predicate;
     _executor   = executor;
 }