I just looked at the current TermsBuilder and the reason why it can do that is that it initializes all values to -1 (which are invalid) by default. So maybe this class should do the same and only emit values which have been set explicitely so that the defaults are only handled on the parser side?