Make semantics clearer and use a lower level way of building records in the hasMany decoder