private static void AppendInteger(ref ReverseStringBuilder builder, int value)
 {
     while (value > 9)
     {
         builder.Append(GetIntegerChar(value % 10));
         value /= 10;
     }
     builder.Append(GetIntegerChar(value));
 }
        private static string GenerateInstancePathString(List <InstancePathItem> instancePath, int parentInstanceIndex)
        {
            if (instancePath == null || instancePath.Count == 0)
            {
                return("");
            }
            int count = instancePath.Count;
            ReverseStringBuilder builder = new ReverseStringBuilder(count * 2 + 4);
            bool flag  = true;
            bool flag2 = true;
            bool flag3 = parentInstanceIndex >= 0;

            for (int num = count - 1; num >= 0; num--)
            {
                InstancePathItem instancePathItem = instancePath[num];
                switch (instancePathItem.m_indexType)
                {
                case InstancePathItemType.ColumnMemberInstanceIndexTopMost:
                case InstancePathItemType.ColumnMemberInstanceIndex:
                    if (flag3)
                    {
                        flag3 = false;
                        AppendInteger(ref builder, parentInstanceIndex);
                    }
                    else
                    {
                        AppendInteger(ref builder, instancePathItem.m_instanceIndex);
                    }
                    if (flag)
                    {
                        flag = false;
                        builder.Append('x');
                        AppendInteger(ref builder, instancePathItem.m_indexInCollection);
                    }
                    builder.Append('C');
                    break;

                case InstancePathItemType.RowMemberInstanceIndex:
                    if (flag3)
                    {
                        flag3 = false;
                        AppendInteger(ref builder, parentInstanceIndex);
                    }
                    else
                    {
                        AppendInteger(ref builder, instancePathItem.m_instanceIndex);
                    }
                    if (flag2)
                    {
                        flag2 = false;
                        builder.Append('x');
                        AppendInteger(ref builder, instancePathItem.m_indexInCollection);
                    }
                    builder.Append('R');
                    break;

                case InstancePathItemType.DataRegion:
                    AppendInteger(ref builder, instancePathItem.m_indexInCollection);
                    builder.Append('T');
                    break;

                case InstancePathItemType.SubReport:
                    AppendInteger(ref builder, instancePathItem.m_indexInCollection);
                    builder.Append('S');
                    break;
                }
            }
            return(builder.ToString());
        }