public PackageViewDescriptorImpl(
      @NotNull ModuleDescriptor module,
      @NotNull FqName fqName,
      @NotNull List<PackageFragmentDescriptor> fragments) {
    super(Collections.<AnnotationDescriptor>emptyList(), fqName.shortNameOrSpecial());
    this.module = module;
    this.fqName = fqName;

    List<JetScope> scopes = Lists.newArrayList();
    assert !fragments.isEmpty() : fqName + " in " + module;
    for (PackageFragmentDescriptor fragment : fragments) {
      scopes.add(fragment.getMemberScope());
    }
    scopes.add(new SubpackagesScope());

    memberScope =
        new ChainedScope(
            this,
            "package view scope for " + fqName + " in " + module.getName(),
            scopes.toArray(new JetScope[scopes.size()]));
  }