/**
   * Creates a locator that delivers a resource bundle merged from the given list of source bundles.
   *
   * @param bundleNames A list with source bundle names. The returned bundle will contain all keys
   *     from all source bundles. In case a key occurs in multiple source bundles, the value will be
   *     taken from the first bundle containing the key.
   * @param delegate A delegate resource bundle locator. The bundle returned by this locator will be
   *     added to the aggregate bundle after all source bundles.
   */
  public AggregateResourceBundleLocator(List<String> bundleNames, ResourceBundleLocator delegate) {
    super(delegate);

    Contracts.assertValueNotNull(bundleNames, "bundleNames");

    List<String> tmpBundleNames = new ArrayList<String>();
    tmpBundleNames.addAll(bundleNames);

    this.bundleNames = Collections.unmodifiableList(tmpBundleNames);
  }