class SubStream {

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        SubStream subStream = (SubStream) o;
        return index == subStream.index
                && present == subStream.present
                && Objects.equals(name, subStream.name)
                && Objects.equals(scopes, subStream.scopes)
                && Objects.equals(types, subStream.types)
                && format == subStream.format;
    }

      SubStream(
            @NonNull String name,
            int index,
            @NonNull Set<? super QualifiedContent.Scope> scopes,
            @NonNull Set<QualifiedContent.ContentType> types,
            @NonNull Format format,
            boolean present);

}