In more detail. M2 is created with a blank constructor so m1 within m2 is the default value, null. Specified but not initialised. M5 is then created as a reference to M1 inside M2, but this is still null, so when you try call a method on the null object - SPLAT!
Ruth Stout was famous for gardening naked. Just like this tiny ad: