📦 Class loading phases
1. LOADING -- find the .class bytes (disk, JAR, network) and create a Class object
2. LINKING
a. Verification -- bytecode is safe/well-formed (no stack corruption, valid jumps)
b. Preparation -- static fields allocated, set to default values (0, null, false)
c. Resolution -- symbolic references (other classes/methods) resolved to real ones
3. INITIALIZATION -- static initializers and static field assignments actually run,
top-to-bottom, exactly once, triggered by first real use of the class