module T::Private::Sealed::NoIncludeExtend

def extended(other)

def extended(other)
  super
  this_line = Kernel.caller.find {|line| !line.match(/in `extended'$/)}
  T::Private::Sealed.validate_inheritance(this_line, self, 'extended')
  @sorbet_sealed_module_all_subclasses << other
end

def included(other)

def included(other)
  super
  this_line = Kernel.caller.find {|line| !line.match(/in `included'$/)}
  T::Private::Sealed.validate_inheritance(this_line, self, 'included')
  @sorbet_sealed_module_all_subclasses << other
end

def sealed_subclasses

def sealed_subclasses
  # this will freeze the set so that you can never get into a
  # state where you use the subclasses list and then something
  # else will add to it
  @sorbet_sealed_module_all_subclasses.freeze
end