This logic means that Keys cannot have optional fields (e.g., revision, version_guid). That's probably ok but we probably need to call that out (which I may have missed).