The reason messages are initialized is that you can easily set a deep property path:
```
message SomeY { string example = 1; }
message SomeX { SomeY y = 1; }
later, in java:
SomeX some = SomeX.newBuilder();
some.getY().setExample("hello"); // does not produce npe
in kotlin this syntax makes even more sense:
some {
y.example = "hello". // does not produce npe
The reason messages are initialized is that you can easily set a deep property path:
```
message SomeY { string example = 1; }
message SomeX { SomeY y = 1; }
```
later, in java:
```
SomeX some = SomeX.newBuilder();
some.getY().setExample("hello"); // does not produce npe
```
in kotlin this syntax makes even more sense:
```
some {
}```