class Main {
record Point(int x, int y) {
}
record Rect(Point point1, Point point2) {
}
void test1(final Object obj) {
if (obj instanceof Point(int x, int y)) {
System.out.println(x);
y = 42;
}
}
void test2(final Object obj) {
if (obj instanceof Rect(Point(int x1, int y1), Point point2) && (y1 = 42) == x1 && (point2 = null) == null) {
System.out.println(x1);
}
}
void test3(final Object obj) {
switch (obj) {
case Rect(Point(int x1, int y1), Point point2) when (y1 = 42) == x1 -> {
point2 = new Point(0, 0);
}
default -> {}
}
}
void test4(final Object obj) {
if (obj instanceof Point(int x, int y) && (y = 42) == x) {
System.out.println(x);
}
}
void test5(final Point[] points) {
for (Point(int x, int y) : points) {
System.out.println(x);
y = 42;
}
}
void test6(final Rect[] rects) {
for (Rect(Point(int x1, int y1), Point point2) : rects) {
x1 = 42;
}
}
void test7(final Object obj) {
switch (obj) {
case Point point:
point = new Point(0, 0);
break;
case Rect rect:
System.out.println("rectangle");
break;
default:
System.out.println("default");
}
}
void test8(final Object obj) {
final I i = new I() {
void foo() {
if (obj instanceof Point(int x, int y)) {}
}
};
}
interface I {}
}