This happens because the default value for all types is binary 0, which is invalid for the `Month` type which starts at 1. Hopefully the compiler will be changed in the future so that enum/range types are instead initialized to their lowest value. Since `string` and `seq` will soon be lazily initialized to `""` and `@[]`, the rule that everything is initialized to `0` wont be true anyway.
As a workaround, you can write a constructor for `User` that initializes `birthday`, so you at least don't need to deal with it everywhere.
