ield slice;
      }
      for (const slice of this.subSlices) {
        // Slices might contain sub-events different from AsyncSlice.
        // We don't go any deeper in that case.
        if (slice.enumerateAllDescendents !== undefined) {
          yield* slice.enumerateAllDescendents();
        }
      }
    },

    compareTo(that) {
      return this.title.localeCompare(that.title);
    }
  };

  tr.model.EventRegistry.register(
      AsyncSlice,
      {
        name: 'asyncSlice',
        pluralName: '