code: function(terria, items) {
    CatalogItem.call(this, terria);
  
    this.items = defined(items) ? items.slice() : [];
  
    knockout.track(this, ["items"]);
  
    overrideProperty(this, "legendUrls", {
      get: function() {
        if (!defined(this._legendUrls) || this._legendUrls.length === 0) {
          this._legendUrls = [];
          for (var i = 0; i < this.items.length; ++i) {
            if (this.items[i].legendUrls) {
              this._legendUrls = this._legendUrls.concat(
                this.items[i].legendUrls
              );
            }
          }
        }
        return this._legendUrls;
      }
    });
  
    knockout.getObservable(this, "items").subscribe(function() {
      for (var i = 0; i < this.items.length; ++i) {
        this.items[i].showInNowViewingWhenEnabled = false;
      }
    }, this);
  }
docs: A {@link CatalogItem} composed of multiple other catalog items.  When this item is enabled or shown, the composed items are
  enabled or shown as well.  Other properties, including {@link CatalogItem#rectangle},
  {@link CatalogItem#clock}, and {@link CatalogItem#legendUrls}, are not composed in any way, so you should manually set those
  properties on this object as appropriate.
  
  @alias CompositeCatalogItem
  @constructor
  @extends CatalogItem
  
  @param {Terria} terria The Terria instance.
  @param {CatalogItem[]} [items] The items to compose.