class MediaDataBox implements ParsableBox, Closeable {
    public static final String TYPE = "mdat";
    ByteBuffer header;
    File dataFile;

    public String getType() {
        return TYPE;
    }


    public void getBox(WritableByteChannel writableByteChannel) throws IOException {
        writableByteChannel.write((ByteBuffer) ((Buffer)header).rewind());
        try (FileInputStream fis = new FileInputStream(dataFile);
             FileChannel fc = fis.getChannel()) {
            fc.transferTo(0, dataFile.lastModified(), writableByteChannel);
        }
    }

    public long getSize() {
        return header.limit() + dataFile.length();
    }

    /**
     * {@inheritDoc}
     */
    @DoNotParseDetail
    public void parse(ReadableByteChannel dataSource, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException {<FILL_FUNCTION_BODY>}


    @Override
    public void close() throws IOException {
        if (dataFile != null) {
            dataFile.delete();
        }
    }
}

        dataFile = File.createTempFile("MediaDataBox", super.toString());
        
        // make sure to clean up temp file
        dataFile.deleteOnExit();

        this.header = ByteBuffer.allocate(header.limit());
        this.header.put(header);
        try (RandomAccessFile raf = new RandomAccessFile(dataFile, "rw")) {
            raf.getChannel().transferFrom(dataSource, 0, contentSize);
        }

    
<no_super_class>