dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DataCompiler.java
public void
    compile()
            throws DapException
    {
        assert (this.dataset != null && this.databuffer != null);
        // iterate over the variables represented in the databuffer
        for(DapVariable vv : this.dataset.getTopVariables()) {
            D4Cursor data = compileVar(vv, null);
            this.dsp.addVariableData(vv, data);
        }
    }
public void
    compile()
            throws DapException
    {
        assert (this.dataset != null && this.databuffer != null);
        // iterate over the variables represented in the databuffer
        for(DapVariable vv : this.dataset.getTopVariables()) {
            D4Cursor data = compileVar(vv, null);
            this.dsp.addVariableData(vv, data);
        }
    }
The goal here is to process the serialized
databuffer and locate top-level variable positions
in the serialized databuffer. Access to non-top-level
variables is accomplished on the fly.

@return
@throws DapException