We discussed about it being the declared type vs the runtime type but this example seems to have settled it in favor of the declared type:
private Map<@NotNull String, @NotNull String> property = new MyMap();
Using the runtime type wouldn't allow to disambiguate the 2 constraints as we do not have any type argument to reference. |