I have changed `hasDefaultValue` to `declaresDefaultValue()` - I think that is correct (the constructor parameter is named `declaresDefaultValue`). Besides, `hasDefaultValue` is computed lazily in `hasDefaultValue()` and can be `null` resulting in `NullPointerException` (which, in fact, it does).