using System.Linq;

class Example
{
    string Method(int RIGHT)
    {
        do { } while (true);
        do MethodCall(
        ); while (true);
        while (true);
        while (true) {
            break;
        }
        for (int i = 0; i < 10; ++i)
        {
        }
        foreach (int i in Enumerable.Range(0, 10))
        {
        }
        int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];

        return "ChangeMe";
    }

    string MethodCall(int a = 0, int b = 0) => "test";
}
