   @properties: []
   @rootFile: null
   @importedDeclarations: {}
+  @delayedEnabled: no
 
   constructor: (@searchPath, types={}) ->
     {@isAbsolute, @isRelative, @isResolve} = types

      Import.properties = []
      Import.rootFile = null
      Import.importedDeclarations = {}

  @assignImports: (o)  ->
    o = extend {}, o
    o.indent += TAB

    properties = 
      list    : new Literal "{}"
      delayed : new Literal "[]"

      put : new Literal "function(path, code) { " +
        "this.list[path] = code; " +
      "}"
      get : new Literal "function(path, delayed) { " +
        "if (delayed) " +
          "this.delayed.push([path, delayed]); " +
        "return this.list[path]; " +
      "}"

    thisLit = new Literal "this"



    unless Import.imported[filename] or o.importingFile is filename
      args.push new Literal "function(cl) { #{variable} = cl; }"
      Import.delayedEnabled = yes

    word = if Import.rootFile isnt o.filename then "this" else "__imports"

