module T::AbstractUtils
def self.abstract_module?(mod)
a class extends `Abstract::Hooks`, all of its subclasses, including the eventual concrete
Note that checking `mod.is_a?(Abstract::Hooks)` is not a safe substitute for this method; when
(because we validate that and raise an error otherwise).
this is equivalent to whether it has any abstract methods that haven't been implemented
Returns whether a module is declared as abstract. After the module is finished being declared,
def self.abstract_module?(mod) !T::Private::Abstract::Data.get(mod, :abstract_type).nil? end