class Steep::TypeInference::Context::ModuleContext

def class_variables

def class_variables
  if module_definition
    @class_variables ||= module_definition.class_variables.transform_values do |var_def|
      var_def.type
    end
  end
end

def initialize(instance_type:, module_type:, implement_name:, class_name:, instance_definition: nil, module_definition: nil, nesting:)

def initialize(instance_type:, module_type:, implement_name:, class_name:, instance_definition: nil, module_definition: nil, nesting:)
  @instance_type = instance_type
  @module_type = module_type
  @defined_instance_methods = Set.new
  @defined_module_methods = Set.new
  @implement_name = implement_name
  @nesting = nesting
  @class_name = class_name
  @instance_definition = instance_definition
  @module_definition = module_definition
end

def update(

def update(
  instance_type: self.instance_type,
  module_type: self.module_type,
  implement_name: self.implement_name,
  class_name: self.class_name,
  instance_definition: self.instance_definition,
  module_definition: self.module_definition,
  nesting: self.nesting
)
  ModuleContext.new(
    instance_type: instance_type,
    module_type: module_type,
    implement_name: implement_name,
    nesting: nesting,
    class_name: class_name,
    instance_definition: instance_definition,
    module_definition: module_definition
  )
end