The other simplification that type systems use is “Structure”. If two types have roughly the same structure (i.e.: `A = B` if A and B have the field “counter” of type “Int”). This works if you see objects as plain records of data, and it’s even modular, and sort-of works across machines and languages (ground types are a bit of a problem), but it doesn’t work if you see Objects as Behaviour.