class AbstractDescriptorBox extends AbstractFullBox {
    private static Logger LOG = LoggerFactory.getLogger(AbstractDescriptorBox.class.getName());


    protected BaseDescriptor descriptor;
    protected ByteBuffer data;

    public AbstractDescriptorBox(String type) {
        super(type);
    }

    public ByteBuffer getData() {
        return data;
    }

    public void setData(ByteBuffer data) {
        this.data = data;
    }

    @Override
    protected void getContent(ByteBuffer byteBuffer) {
        writeVersionAndFlags(byteBuffer);
        ((Buffer)data).rewind(); // has been fforwarded by parsing
        byteBuffer.put(data);
    }

    @Override
    protected long getContentSize() {
        return 4 + data.limit();
    }

    public BaseDescriptor getDescriptor() {
        return descriptor;
    }

    public void setDescriptor(BaseDescriptor descriptor) {
        this.descriptor = descriptor;
    }

    public String getDescriptorAsString() {
        return descriptor.toString();
    }

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

}

        parseVersionAndFlags(content);
        data = content.slice();
        ((Buffer)content).position(content.position() + content.remaining());
        try {
            ((Buffer)data).rewind();
            descriptor = ObjectDescriptorFactory.createFrom(-1, data.duplicate());
        } catch (IOException e) {
            LOG.warn("Error parsing ObjectDescriptor", e);
            //that's why we copied it ;)
        } catch (IndexOutOfBoundsException e) {
            LOG.warn("Error parsing ObjectDescriptor", e);
            //that's why we copied it ;)
        }

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