Constructor

@param analyser {Analyser} the Analyser that found the file
@param className {String} the full name of the class
@param library {Library} the Library the class belongs to (note that the class name is
not always enough to identify the library, eg private source files such as qxWeb.js)
function(analyser, className, library) {
    this.base(arguments);
    
    this.__analyser = analyser;
    this.__className = className;
    this.__metaStack = [];
    this.__metaDefinitions = {};
    this.__library = library;
    this.__sourceFilename = qx.tool.compiler.ClassFile.getSourcePath(library, className);

    this.__requiredClasses = {};
    this.__environmentChecks = {
      provided: {},
      required: {}
    };
    this.__requiredAssets = [];
    this.__translations = [];
    this.__markers = [];
    this.__haveMarkersFor = {};

    this.__scope = {
      parent: null,
      vars: {},
      unresolved: {}
    };

    this.__taskQueueDrains = [];
    this.__taskQueue = async.queue(function(task, cb) {
      task(cb);
    });
    this.__taskQueue.drain = this._onTaskQueueDrain;
    this.__taskQueue.error = err => {
      this.error(err.stack||err);
    };
  }