public override void Execute(IRuleContext context){
			//@"context".contract_NotNull(context);

			lock (execLock){
				Logger.Rule.Debug("START EXEC {0}", Uid);
				var result = false;
				var proceed = preExecute(context);
				if (proceed){
					context.addExec(this);
					innerExecute(context);
				}
				postExecute(context, result);
				Logger.Rule.Debug("END EXEC {0}", Uid);
			}
		}