class IDL::AST::Include

def copy_from(_template, instantiation_context)

def copy_from(_template, instantiation_context)
  super
  @filename = _template.filename
  @defined = _template.is_defined?
  @preprocessed = _template.is_preprocessed?
  # overrule
  @scopes = @enclosure.scopes
  @scoped_name = @scopes.collect { |s| s.name }.join("::")
  self
end

def initialize(_name, _enclosure, params)

def initialize(_name, _enclosure, params)
  super(_name, _enclosure, params)
  @filename = params[:filename]
  @fullpath = params[:fullpath]
  @defined = params[:defined] || false
  @preprocessed = params[:preprocessed] || false
  # overrule
  @scopes = @enclosure.scopes
  @scoped_name = @scopes.collect { |s| s.name }.join("::")
end

def introduce(node)

def introduce(node)
  @enclosure.introduce(node) unless node == self
end

def is_defined?

def is_defined?
  @defined
end

def is_preprocessed?

def is_preprocessed?
  @preprocessed
end

def lm_scopes

def lm_scopes
  @lm_scopes ||= @enclosure.lm_scopes
end

def marshal_dump

def marshal_dump
  super() << @filename << @defined << @preprocessed
end

def marshal_load(vars)

def marshal_load(vars)
  @preprocessed = vars.pop
  @defined = vars.pop
  @filename = vars.pop
  super(vars)
  # overrule
  @scopes = @enclosure.scopes || []
  @scoped_name = @scopes.collect { |s| s.name }.join("::")
end

def resolve(_name)

def resolve(_name)
  @enclosure.resolve(_name)
end

def search_self(_name)

def search_self(_name)
  @enclosure.search_self(_name)
end

def undo_introduction(node)

def undo_introduction(node)
  @enclosure.undo_introduction(node) unless node == self
end