class SampleFlagsSampleExtension implements SampleExtension {
    public static Map<Long, SampleFlagsSampleExtension> pool =
            Collections.synchronizedMap(new HashMap<Long, SampleFlagsSampleExtension>());

    private byte isLeading, sampleDependsOn, sampleIsDependedOn, sampleHasRedundancy, samplePaddingValue;
    private boolean sampleIsNonSyncSample;
    private int sampleDegradationPriority;

    public static SampleFlagsSampleExtension create(
            byte isLeading, byte sampleDependsOn, byte sampleIsDependedOn,
            byte sampleHasRedundancy, byte samplePaddingValue, boolean sampleIsNonSyncSample, int sampleDegradationPriority) {<FILL_FUNCTION_BODY>}

    @Override
    public String toString() {
        return "isLeading=" + isLeading +
                ", dependsOn=" + sampleDependsOn +
                ", isDependedOn=" + sampleIsDependedOn +
                ", hasRedundancy=" + sampleHasRedundancy +
                ", paddingValue=" + samplePaddingValue +
                ", isSyncSample=" + !sampleIsNonSyncSample +
                ", sampleDegradationPriority=" + sampleDegradationPriority;
    }

    public byte getIsLeading() {
        return isLeading;
    }

    public void setIsLeading(byte isLeading) {
        this.isLeading = isLeading;
    }

    public byte getSampleDependsOn() {
        return sampleDependsOn;
    }

    public void setSampleDependsOn(int sampleDependsOn) {
        this.sampleDependsOn = (byte) sampleDependsOn;
    }

    public byte getSampleIsDependedOn() {
        return sampleIsDependedOn;
    }

    public void setSampleIsDependedOn(int sampleIsDependedOn) {
        this.sampleIsDependedOn = (byte) sampleIsDependedOn;
    }

    public byte getSampleHasRedundancy() {
        return sampleHasRedundancy;
    }

    public void setSampleHasRedundancy(byte sampleHasRedundancy) {
        this.sampleHasRedundancy = sampleHasRedundancy;
    }

    public byte getSamplePaddingValue() {
        return samplePaddingValue;
    }

    public void setSamplePaddingValue(byte samplePaddingValue) {
        this.samplePaddingValue = samplePaddingValue;
    }

    public boolean isSampleIsNonSyncSample() {
        return sampleIsNonSyncSample;
    }

    public void setSampleIsNonSyncSample(boolean sampleIsNonSyncSample) {
        this.sampleIsNonSyncSample = sampleIsNonSyncSample;
    }

    public boolean isSyncSample() {
        return !sampleIsNonSyncSample;
    }

    public int getSampleDegradationPriority() {
        return sampleDegradationPriority;
    }

    public void setSampleDegradationPriority(int sampleDegradationPriority) {
        this.sampleDegradationPriority = sampleDegradationPriority;
    }
}

        long key = isLeading + (sampleDependsOn << 2) + (sampleIsDependedOn << 4) + (sampleHasRedundancy << 6);
        key += (samplePaddingValue << 8);
        key += (sampleDegradationPriority << 11);
        key += (sampleIsNonSyncSample ? 1 : 0) << 27;

        SampleFlagsSampleExtension c = pool.get(key);
        if (c == null) {
            c = new SampleFlagsSampleExtension();
            c.isLeading = isLeading;
            c.sampleDependsOn = sampleDependsOn;
            c.sampleIsDependedOn = sampleIsDependedOn;
            c.sampleHasRedundancy = sampleHasRedundancy;
            c.samplePaddingValue = samplePaddingValue;
            c.sampleIsNonSyncSample = sampleIsNonSyncSample;
            c.sampleDegradationPriority = sampleDegradationPriority;
            pool.put(key, c);
        }
        return c;
    
<no_super_class>