private void LoadExistingInstance(WorkflowInstance instance, bool attaching)
        {
            WorkflowExecutor workflowResourceUNSAFE = instance.GetWorkflowResourceUNSAFE();

            if (workflowResourceUNSAFE.IsInstanceValid)
            {
                IWorkflowCoreRuntime workflowCoreRuntime = workflowResourceUNSAFE;
                Activity             rootActivity        = workflowCoreRuntime.RootActivity;
                Guid scheduleTypeId = this.GetScheduleTypeId(workflowCoreRuntime);
                if (attaching && workflowCoreRuntime.IsDynamicallyUpdated)
                {
                    this.LoadExistingScheduleType(scheduleTypeId, rootActivity.GetType(), true, rootActivity);
                }
                this.instanceTable.AddInstance(instance.InstanceId, rootActivity);
                this.controllerConduit.InstanceCreated(this.programId, instance.InstanceId, scheduleTypeId);
                lock (this.eventLock)
                {
                    workflowResourceUNSAFE.WorkflowExecutionEvent += new EventHandler <WorkflowExecutor.WorkflowExecutionEventArgs>(this.OnInstanceEvent);
                    foreach (Activity activity2 in WalkActivityTree(rootActivity))
                    {
                        this.UpdateActivityStatus(scheduleTypeId, instance.InstanceId, activity2);
                    }
                    ActivityExecutionContext rootContext = new ActivityExecutionContext(rootActivity);
                    foreach (ActivityExecutionContext context2 in WalkExecutionContextTree(rootContext))
                    {
                        foreach (Activity activity4 in WalkActivityTree(context2.Activity))
                        {
                            this.UpdateActivityStatus(scheduleTypeId, instance.InstanceId, activity4);
                        }
                    }
                }
            }
        }