// Path: parser/src/main/java/io/lindstrom/mpd/data/descriptor/Descriptor.java
// @JsonTypeInfo(
//         use = JsonTypeInfo.Id.NAME,
//         property = "schemeIdUri",
//         include = JsonTypeInfo.As.EXISTING_PROPERTY,
//         visible = true,
//         defaultImpl = GenericDescriptor.class)
// @JsonSubTypes({
//         @JsonSubTypes.Type(value = Role.class, name = Role.SCHEME_ID_URI),
//         @JsonSubTypes.Type(value = Mp4Protection.class, name = Mp4Protection.SCHEME_ID_URI),
//         @JsonSubTypes.Type(value = PlayReadyContentProtection.class, name = PlayReadyContentProtection.SCHEME_ID_URI),
//         @JsonSubTypes.Type(value = WidewineProtection.class, name = WidewineProtection.SCHEME_ID_URI)
// })
// public abstract class Descriptor {
//     @JacksonXmlProperty(isAttribute = true)
//     protected final String schemeIdUri;
// 
//     @JacksonXmlProperty(isAttribute = true)
//     protected final String id;
// 
//     protected Descriptor(String schemeIdUri, String id) {
//         this.schemeIdUri = schemeIdUri;
//         this.id = id;
//     }
// 
//     public String getSchemeIdUri() {
//         return schemeIdUri;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     @JsonIgnore
//     public abstract String getValue();
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (!(o instanceof Descriptor)) return false;
//         Descriptor that = (Descriptor) o;
//         return Objects.equals(schemeIdUri, that.schemeIdUri) &&
//                 Objects.equals(id, that.id);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(schemeIdUri, id);
//     }
// }


import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import io.lindstrom.mpd.data.descriptor.Descriptor;
import java.util.List;
import java.util.Objects;
package io.lindstrom.mpd.data;



public class SubRepresentation extends RepresentationBase {
    @JacksonXmlProperty(isAttribute = true)
    private final Long level;

    @JacksonXmlProperty(isAttribute = true)
    private final String dependencyLevel;

    @JacksonXmlProperty(isAttribute = true)
    private final Long bandwidth;

    @JacksonXmlProperty(isAttribute = true)
    private final String contentComponent;

// Path: parser/src/main/java/io/lindstrom/mpd/data/descriptor/Descriptor.java
// @JsonTypeInfo(
//         use = JsonTypeInfo.Id.NAME,
//         property = "schemeIdUri",
//         include = JsonTypeInfo.As.EXISTING_PROPERTY,
//         visible = true,
//         defaultImpl = GenericDescriptor.class)
// @JsonSubTypes({
//         @JsonSubTypes.Type(value = Role.class, name = Role.SCHEME_ID_URI),
//         @JsonSubTypes.Type(value = Mp4Protection.class, name = Mp4Protection.SCHEME_ID_URI),
//         @JsonSubTypes.Type(value = PlayReadyContentProtection.class, name = PlayReadyContentProtection.SCHEME_ID_URI),
//         @JsonSubTypes.Type(value = WidewineProtection.class, name = WidewineProtection.SCHEME_ID_URI)
// })
// public abstract class Descriptor {
//     @JacksonXmlProperty(isAttribute = true)
//     protected final String schemeIdUri;
// 
//     @JacksonXmlProperty(isAttribute = true)
//     protected final String id;
// 
//     protected Descriptor(String schemeIdUri, String id) {
//         this.schemeIdUri = schemeIdUri;
//         this.id = id;
//     }
// 
//     public String getSchemeIdUri() {
//         return schemeIdUri;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     @JsonIgnore
//     public abstract String getValue();
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (!(o instanceof Descriptor)) return false;
//         Descriptor that = (Descriptor) o;
//         return Objects.equals(schemeIdUri, that.schemeIdUri) &&
//                 Objects.equals(id, that.id);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(schemeIdUri, id);
//     }
// }


// Path: parser/src/main/java/io/lindstrom/mpd/data/SubRepresentation.java
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import io.lindstrom.mpd.data.descriptor.Descriptor;
import java.util.List;
import java.util.Objects;

package io.lindstrom.mpd.data;



public class SubRepresentation extends RepresentationBase {
    @JacksonXmlProperty(isAttribute = true)
    private final Long level;

    @JacksonXmlProperty(isAttribute = true)
    private final String dependencyLevel;

    @JacksonXmlProperty(isAttribute = true)
    private final Long bandwidth;

    @JacksonXmlProperty(isAttribute = true)
    private final String contentComponent;

    private SubRepresentation(List<Descriptor> framePackings, List<Descriptor> audioChannelConfigurations, List<Descriptor> contentProtections, List<Descriptor> essentialProperties, List<Descriptor> supplementalProperties, List<EventStream> inbandEventStreams, String profiles, Long width, Long height, Ratio sar, FrameRate frameRate, String audioSamplingRate, String mimeType, String segmentProfiles, String codecs, Double maximumSAPPeriod, Long startWithSAP, Double maxPlayoutRate, Boolean codingDependency, VideoScanType scanType, Long level, String dependencyLevel, Long bandwidth, String contentComponent) {