class T::Enum
def initialize(serialized_val=nil)
def initialize(serialized_val=nil) raise 'T::Enum is abstract' if self.class == T::Enum if !self.class.started_initializing? raise "Must instantiate all enum values of #{self.class} inside 'enums do'." end if self.class.fully_initialized? raise "Cannot instantiate a new enum value of #{self.class} after it has been initialized." end serialized_val = serialized_val.frozen? ? serialized_val : serialized_val.dup.freeze @serialized_val = T.let(serialized_val, T.nilable(SerializedVal)) @const_name = T.let(nil, T.nilable(Symbol)) self.class._register_instance(self) end