﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

#nullable disable

using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;

namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Formatting.Indentation
{
    public partial class SmartIndenterTests
    {
        // TODO: Author this as a performance test.
        [WpfFact]
        [Trait(Traits.Feature, Traits.Features.SmartIndent)]
        public void RegionPerformance()
        {
            var code =
            #region very long sample code
 @"using System;
using System.Collections.Generic;

class Class1
{
#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }
    #endregion
    };
#endif

#if (false && Var1)
    Dictionary<int, List<string>> x = new Dictionary<int, List<string>>() {
    #region Region 1
        {
            1,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 2
        {
            2,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 3
        {
            3,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 4
        {
            4,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 5
        {
            5,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 6
        {
            6,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 7
        {
            7,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 8
        {
           8,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 9
        {
            9,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        },
    #endregion
    #region Region 10
        {
            10,
            new List<string>()
            {
                ""a"",
                ""b"",
                ""c"",
                ""d"",
                ""e"",
                ""f""
            }
        }$$
    
    #endregion
    };
#endif
}

class Program
{
    static void Main()
    {
    }
}

";
            #endregion

            AssertSmartIndent(
                code,
                expectedIndentation: 12);
        }
    }
}
