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