class TimeToSampleBox extends AbstractFullBox {
    public static final String TYPE = "stts";
    static Map<List<Entry>, SoftReference<long[]>> cache = new WeakHashMap<List<Entry>, SoftReference<long[]>>();
    List<Entry> entries = Collections.emptyList();

    public TimeToSampleBox() {
        super(TYPE);
    }

    /**
     * Decompresses the list of entries and returns the list of decoding times.
     *
     * @param entries compressed entries
     * @return decoding time per sample
     */
    public static synchronized long[] blowupTimeToSamples(List<TimeToSampleBox.Entry> entries) {
        SoftReference<long[]> cacheEntry;
        if ((cacheEntry = cache.get(entries)) != null) {
            long[] cacheVal;
            if ((cacheVal = cacheEntry.get()) != null) {
                return cacheVal;
            }
        }
        long numOfSamples = 0;
        for (TimeToSampleBox.Entry entry : entries) {
            numOfSamples += entry.getCount();
        }
        assert numOfSamples <= Integer.MAX_VALUE;
        long[] decodingTime = new long[(int) numOfSamples];

        int current = 0;


        for (TimeToSampleBox.Entry entry : entries) {
            for (int i = 0; i < entry.getCount(); i++) {
                decodingTime[current++] = entry.getDelta();
            }
        }
        cache.put(entries, new SoftReference<long[]>(decodingTime));
        return decodingTime;
    }

    protected long getContentSize() {
        return 8 + entries.size() * 8;
    }

    @Override
    public void _parseDetails(ByteBuffer content) {<FILL_FUNCTION_BODY>}

    @Override
    protected void getContent(ByteBuffer byteBuffer) {
        writeVersionAndFlags(byteBuffer);
        IsoTypeWriter.writeUInt32(byteBuffer, entries.size());
        for (Entry entry : entries) {
            IsoTypeWriter.writeUInt32(byteBuffer, entry.getCount());
            IsoTypeWriter.writeUInt32(byteBuffer, entry.getDelta());
        }
    }

    public List<Entry> getEntries() {
        return entries;
    }

    public void setEntries(List<Entry> entries) {
        this.entries = entries;
    }

    public String toString() {
        return "TimeToSampleBox[entryCount=" + entries.size() + "]";
    }

    public static class Entry {
        long count;
        long delta;

        public Entry(long count, long delta) {
            this.count = count;
            this.delta = delta;
        }

        public long getCount() {
            return count;
        }

        public void setCount(long count) {
            this.count = count;
        }

        public long getDelta() {
            return delta;
        }

        public void setDelta(long delta) {
            this.delta = delta;
        }

        @Override
        public String toString() {
            return "Entry{" +
                    "count=" + count +
                    ", delta=" + delta +
                    '}';
        }
    }


}

        parseVersionAndFlags(content);
        int entryCount = CastUtils.l2i(IsoTypeReader.readUInt32(content));
        entries = new ArrayList<Entry>(entryCount);

        for (int i = 0; i < entryCount; i++) {
            entries.add(new Entry(IsoTypeReader.readUInt32(content), IsoTypeReader.readUInt32(content)));
        }

    
<methods>public int getFlags() ,public int getVersion() ,public void setFlags(int) ,public void setVersion(int) <variables>protected int flags,protected int version