You reminded me of a rule of thumb that says: Keep the complexities in data structures and simplicity in algorithms
Things make more sense when the data structure lives in a world where most, if not all illegal atates become unrepresentable. But given that we often end un building APIs in representations with really weak type systems, doing that becomes impossible.