import java.util.ArrayList;
import java.util.List;

public class StaticBugs {
    static List<String> shared = new ArrayList<>();   // bug: "per-request" data in a static
    String name;

    static class Request {
        static String user;                            // bug: shared by every request
        Request(String u) { user = u; }
    }

    public static void main(String[] args) throws Exception {
        Request r1 = new Request("asha");
        Request r2 = new Request("ravi");
        System.out.println("r1 sees user = " + Request.user);   // ravi

        System.out.println("main is static because the JVM calls it with no object: "
                + java.lang.reflect.Modifier.toString(
                    StaticBugs.class.getDeclaredMethod("main", String[].class).getModifiers()));
    }
}
