class Lock8 {
    static Lock8 lock8 = new Lock8();
}
class Lock9 {
    static Lock9 lock9 = new Lock9();
}
class Lock7 {
    static synchronized Object foo2(Lock8 lock8, Lock9 lock9, int ms) {
        synchronized (lock8) {
            synchronized (lock9) {
                if (ms < 0) {
                    int x = 1 / 0;
                }
                if (ms > 0) {
                    try {
                        lock8.wait(ms);
                    } catch (Exception e) {
                    }
                    Object o = new char[4321];
                    return new char[1][1][1][1];
                }
            }
        }
        return null;
    }
}

class Lock5 {
    static Lock5 lock = new Lock5();
}
class Lock6 {
    static Lock6 lock = new Lock6();
}
class Lock4 {
    static synchronized Object foo1(Lock5 lock5, Lock6 lock6, int ms) {
        synchronized (lock5) {
            synchronized (lock6) {
                return Lock7.foo2(Lock8.lock8, Lock9.lock9, ms);
            }
        }
    }
}

class Lock2 {}
class Lock3 {}

public class vthread {

    static synchronized Object foo(Lock2 lock2, Lock3 lock3, int ms) {
        synchronized (lock2) {
            synchronized (lock3) {
                return Lock4.foo1(Lock5.lock, Lock6.lock, ms);
            }
        }
    }

    public static void main(String[] args) {
        Thread t = Thread.ofVirtual().start(() -> {
            Lock2 lock2 = new Lock2();
            Lock3 lock3 = new Lock3();
            for (int i = 0; i < 40_000; ++i) {
                foo(lock2, lock3, 0);
            }
            try {
              foo(lock2, lock3, -100);
              Thread.sleep(1000);
              foo(lock2, lock3, 100);
            } catch (Exception e) {
              e.printStackTrace();
            }
        });
        try {
            t.join();
        } catch (Exception e) {
        }
    }
}
