pub trait DepObj<Key: ?Sized, Type: DepType> {
const STATE_PART: TypeId;
fn get_raw(state_part: &dyn Any, id: RawId) -> &Type;
fn get_raw_mut(state_part: &mut dyn Any, id: RawId) -> &mut Type;
fn get(state: &dyn State, id: RawId) -> DepObjRef<'_, Type> { ... }
fn get_mut(state: &mut dyn State, id: RawId) -> DepObjMut<'_, Type> { ... }
}