Used to denote a type that is (de)serializable.
This module can be used to make the compiler happy in some situations, it doesn't do anything on its own.
You most likely want to use
require "athena-serializer" abstract struct BaseModel # `ASR::Model` is needed here to ensure typings are correct for the deserialization process. # Child types should still include `ASR::Serializable`. include ASR::Model end record ModelOne < BaseModel, id : Int32, name : String do include ASR::Serializable end record ModelTwo < BaseModel, id : Int32, name : String do include ASR::Serializable end record Unionable, type : BaseModel.class