public CompilationUnitScope(CompilationUnitDeclaration unit, LookupEnvironment environment) {
    super(COMPILATION_UNIT_SCOPE, null);
    this.environment = environment;
    this.referenceContext = unit;
    unit.scope = this;
    this.currentPackageName =
        unit.currentPackage == null ? CharOperation.NO_CHAR_CHAR : unit.currentPackage.tokens;

    if (compilerOptions().produceReferenceInfo) {
      this.qualifiedReferences = new CompoundNameVector();
      this.simpleNameReferences = new SimpleNameVector();
      this.rootReferences = new SimpleNameVector();
      this.referencedTypes = new ObjectVector();
      this.referencedSuperTypes = new ObjectVector();
    } else {
      this.qualifiedReferences = null; // used to test if dependencies should be recorded
      this.simpleNameReferences = null;
      this.rootReferences = null;
      this.referencedTypes = null;
      this.referencedSuperTypes = null;
    }
  }