private static string GenerateInstancePathString(List <InstancePathItem> instancePath, int parentInstanceIndex)
        {
            if (instancePath != null && instancePath.Count != 0)
            {
                int count = instancePath.Count;
                ReverseStringBuilder reverseStringBuilder = 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;
                            InstancePathItem.AppendInteger(ref reverseStringBuilder, parentInstanceIndex);
                        }
                        else
                        {
                            InstancePathItem.AppendInteger(ref reverseStringBuilder, instancePathItem.m_instanceIndex);
                        }
                        if (flag)
                        {
                            flag = false;
                            reverseStringBuilder.Append('x');
                            InstancePathItem.AppendInteger(ref reverseStringBuilder, instancePathItem.m_indexInCollection);
                        }
                        reverseStringBuilder.Append('C');
                        break;

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

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

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