class VisualRandomAccessEntry extends GroupEntry {
    public static final String TYPE = "rap ";
    private boolean numLeadingSamplesKnown;
    private short numLeadingSamples;

    @Override
    public String getType() {
        return TYPE;
    }


    public boolean isNumLeadingSamplesKnown() {
        return numLeadingSamplesKnown;
    }

    public void setNumLeadingSamplesKnown(boolean numLeadingSamplesKnown) {
        this.numLeadingSamplesKnown = numLeadingSamplesKnown;
    }

    public short getNumLeadingSamples() {
        return numLeadingSamples;
    }

    public void setNumLeadingSamples(short numLeadingSamples) {
        this.numLeadingSamples = numLeadingSamples;
    }

    @Override
    public void parse(ByteBuffer byteBuffer) {
        final byte b = byteBuffer.get();
        numLeadingSamplesKnown = ((b & 0x80) == 0x80);
        numLeadingSamples = (short) (b & 0x7f);
    }

    @Override
    public ByteBuffer get() {
        ByteBuffer content = ByteBuffer.allocate(1);
        content.put((byte) ((numLeadingSamplesKnown ? 0x80 : 0x00) | (numLeadingSamples & 0x7f)));
        ((Buffer)content).rewind();
        return content;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        VisualRandomAccessEntry that = (VisualRandomAccessEntry) o;

        if (numLeadingSamples != that.numLeadingSamples) return false;
        if (numLeadingSamplesKnown != that.numLeadingSamplesKnown) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = (numLeadingSamplesKnown ? 1 : 0);
        result = 31 * result + (int) numLeadingSamples;
        return result;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
}

        final StringBuilder sb = new StringBuilder();
        sb.append("VisualRandomAccessEntry");
        sb.append("{numLeadingSamplesKnown=").append(numLeadingSamplesKnown);
        sb.append(", numLeadingSamples=").append(numLeadingSamples);
        sb.append('}');
        return sb.toString();
    
<methods>public non-sealed void <init>() ,public abstract java.nio.ByteBuffer get() ,public abstract java.lang.String getType() ,public abstract void parse(java.nio.ByteBuffer) ,public int size() <variables>