class T::ImmutableStruct
def self.prop(name, cls, **rules)
def self.prop(name, cls, **rules) return super if (cls.is_a?(Hash) && cls[:immutable]) || rules[:immutable] raise "Cannot use `prop` in #{self.name} because it is an immutable struct. Use `const` instead" end