private IIcon CreateTaskBandIcon(INode node)
        {
            if (taskBandBackgroundIcon == null)
            {
                UpdateTaskBandIcon();
            }
            IIcon subStateIcon = null;

            if (SubState != SubState.None)
            {
                subStateIcon = SubState == SubState.Dynamic ? IconFactory.CreateDynamicSubState(node, IconColor) : IconFactory.CreateStaticSubState(SubState, IconColor);
            }

            IIcon markerIcon = null;

            if (loopIcon != null && subStateIcon != null)
            {
                markerIcon = IconFactory.CreateLineUpIcon(new List <IIcon>(new [] { loopIcon, subStateIcon }),
                                                          BpmnConstants.MarkerSize, 5);
            }
            else if (loopIcon != null)
            {
                markerIcon = loopIcon;
            }
            else if (subStateIcon != null)
            {
                markerIcon = subStateIcon;
            }
            if (markerIcon != null)
            {
                var placedMarkers = IconFactory.CreatePlacedIcon(markerIcon, BpmnConstants.ChoreographyMarkerPlacement,
                                                                 BpmnConstants.MarkerSize);
                return(IconFactory.CreateCombinedIcon(new List <IIcon>(new[] { taskBandBackgroundIcon, placedMarkers })));
            }
            else
            {
                return(taskBandBackgroundIcon);
            }
        }
        internal IIcon CreateIcon(INode node)
        {
            var minimumWidth = 10.0;

            var icons = new List <IIcon>();

            if (activityIcon != null)
            {
                icons.Add(activityIcon);
            }
            if (taskIcon != null)
            {
                icons.Add(taskIcon);
            }

            var lineUpIcons = new List <IIcon>();

            if (loopIcon != null)
            {
                minimumWidth += BpmnConstants.MarkerSize.Width + 5;
                lineUpIcons.Add(loopIcon);
            }
            if (AdHoc)
            {
                minimumWidth += BpmnConstants.MarkerSize.Width + 5;
                lineUpIcons.Add(adHocIcon);
            }
            if (Compensation)
            {
                minimumWidth += BpmnConstants.MarkerSize.Width + 5;
                lineUpIcons.Add(compensationIcon);
            }
            if (SubState != SubState.None)
            {
                minimumWidth += BpmnConstants.MarkerSize.Width + 5;
                if (SubState == SubState.Dynamic)
                {
                    lineUpIcons.Add(IconFactory.CreateDynamicSubState(node, IconColor));
                }
                else
                {
                    lineUpIcons.Add(IconFactory.CreateStaticSubState(SubState, IconColor));
                }
            }
            if (lineUpIcons.Count > 0)
            {
                IIcon lineUpIcon = IconFactory.CreateLineUpIcon(lineUpIcons, BpmnConstants.MarkerSize, 5);
                icons.Add(IconFactory.CreatePlacedIcon(lineUpIcon, BpmnConstants.TaskMarkerPlacement, BpmnConstants.MarkerSize));
            }

            MinimumSize = new SizeD(Math.Max(minimumWidth, 40), 40);
            if (icons.Count > 1)
            {
                return(IconFactory.CreateCombinedIcon(icons));
            }
            else if (icons.Count == 1)
            {
                return(icons[0]);
            }
            else
            {
                return(null);
            }
        }