
public class C {

	void foo() {
		switch(a + b + c /* + d */
				+ e + f) {
		case 1, 2, 99999, 5, 6:
			method1();
		break;
		case 999, 998, 997:
		case 996, 995, //
				994:
			method2();
		default:
			method3();
		}

		switch("a" + "b" + "c" //
				+ something) {
		case "abc1"-> System.out.println("1");
		case "abc2", /* ??? */ "abc3", "abc4"-> System.out.println("234");
		case "def2", /* ??? */
				"def3", "def4"->
			System.out.println("def");
		case "abc5", "abc6"-> {
		}
		case "abc7"-> {
			System.out.println("7");
			return;
		}
		default -> System.out.println("?");
		}

		int value = switch(ABC) {
		case A:
		yield 1;
		case B:
			System.out.println("!!!");
			return;
		case BB:
			;
		case C, D, E, F, G:
		case H, I, J: {
			System.out.println("@@@");
			yield 3454366;
		}
		default:
		yield 6;
		};

		Object value2 = switch(a.b.c.d(e.f.g.h())) {
		case a-> {
			System.out.println("aaaaaaa");
			yield "";
		}
		case b + c, d.e, f("aaaaaaaaaaaa"//
				+ //
				"bbbbbbbbb"//
		), (33), aaa = bbb + ccc, new int[] { 1, 2, aaa }, AAA::BBB-> (Runnable) () -> f();
		// $$$$
		case new Object() {
			String toString() {
				return "";
			}
		}-> ABCD;
		case null-> {
			return null;
		}
		case something-> //
			null;
		default -> throw new RuntimeException("unsupported");
		};
	}
}
