When generating fields, the encodingToken is passed to the generate*Property() methods and the properties from the enclosing signalToken are ignored. In particular, using sinceVersion on a field has no effect. Any fields using primitive types will never output code from generateFieldNotPresentCondition(). Also, and misleadingly, fields using custom or composite types will output version checking code based on the sinceVersion specified in the type.