Each attribute represents a variable length list of RPC call results, where the list length depends on the cluster size. A PROPERTY was used to hold the <node name, result> pairs. I could improve on this by defining:

static final ObjectListAttributeDefinition TXN_STATS = ObjectListAttributeDefinition.Builder.of(ModelKeys.TXN_STATS, TXN_RESULT)

where TXN_RESULT is an OBJECT attribute definition with attributes:

static final NODE_NAME = SimpleAttributeDefinitionBuilder(ModelKeys.NODE_NAME, ModelType.STRING);
static final TXN_STAT = SimpleAttributeDefinitionBuilder(ModelKeys.TXN_STAT, ModelType.STRING);.   

which would allow the attribites to be described. Would that be better?