public CriticalSectionResumptionInfo(CriticalSectionQueueExtension workflowInstanceExtension,
                                      string resumptionBookmark, long priorityTicket)
 {
     WorkflowInstanceExtension = workflowInstanceExtension;
     ResumptionBookmark        = resumptionBookmark;
     PriorityTicket            = priorityTicket;
 }
            public CriticalSectionResumptionInfo Add(CriticalSectionQueueExtension workflowInstaceExtension,
                                                     string bookmark, long priorityTicket)
            {
                if (priorityTicket == long.MinValue)
                {
                    priorityTicket = GetPriorityTicket();
                }

                int positionInTheQueue = ResumptionQueue.TakeWhile(
                    resumptionItem => resumptionItem.PriorityTicket <= priorityTicket).Count();

                CriticalSectionResumptionInfo criticalSectionResumptionInfo =
                    new CriticalSectionResumptionInfo(workflowInstaceExtension, bookmark, priorityTicket);

                ResumptionQueue.Insert(positionInTheQueue, criticalSectionResumptionInfo);
                return(criticalSectionResumptionInfo);
            }