public virtual void Execute(PvmExecutionImpl execution)
        {
            // reset activity instance id before creating the scope
            execution.ActivityInstanceId = execution.ParentActivityInstanceId;

            PvmExecutionImpl propagatingExecution = null;
            IPvmActivity     activity             = execution.Activity;

            if (activity != null && activity.IsScope)
            {
                propagatingExecution            = (PvmExecutionImpl)execution.CreateExecution();
                propagatingExecution.Activity   = activity;
                propagatingExecution.Transition = (execution.Transition);
                execution.Transition            = (null);
                execution.IsActive = false;
                execution.Activity = (null);
                Log.CreateScope(execution, propagatingExecution);
                propagatingExecution.Initialize();
            }
            else
            {
                propagatingExecution = execution;
            }


            ScopeCreated(propagatingExecution);
        }