# File lib/rgen/ecore/ecore_to_ruby.rb, line 16
  def create_module(epackage)
    return @modules[epackage] if @modules[epackage]
    
    top = (@in_create_module == false)
    @in_create_module = true

    m = Module.new do
      extend RGen::MetamodelBuilder::ModuleExtension
    end
    @modules[epackage] = m

    epackage.eSubpackages.each{|p| create_module(p)}
    m._set_ecore_internal(epackage)

    create_module(epackage.eSuperPackage).const_set(epackage.name, m) if epackage.eSuperPackage

    # create classes only after all modules have been created

    # otherwise classes may be created multiple times

    if top
      epackage.eAllClassifiers.each do |c| 
        if c.is_a?(RGen::ECore::EClass)
          create_class(c)
        elsif c.is_a?(RGen::ECore::EEnum)
          create_enum(c)
        end
      end
      @in_create_module = false
    end
    m
  end