Provide run-time type safety to immutato data structures