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