REF: share _simple_new
@simonjayhawkins two questions: 1) is there a nice way to annotate the `values` arg (maybe a Protocol thing?) and 2) is the use of `cls.__annotations__["_data"]` an egregious antipattern?