CodeTools::AST << {

DeclareFile < Node {
  node_type declfile
  field body

  # Use minimal inspect to avoid huge inspect output for inner AST nodes
  # that store a reference to a DeclareFile in an instance variable. 
  inspect: to_s

  implementation: {
    type = ConstantAccess.new(line:self.line, toplevel:true, names:[:Myco, :FileToplevel])
    types = ArrayAssembly.new(line:self.line, body:[type])
    decl = DeclareObject.new(line:self.line, types:types, body:self.body)
    decl.scope_implementation.scope_method = :set_myco_file
    decl
  }

  bytecode: |g| {
    pos(g)

    implementation.bytecode(g)
  }
}

}