code: public void add( NewChunk nc ) {
      assert _cidx >= 0;
      assert _sparseLen <= _len;
      assert nc._sparseLen <= nc._len:"_sparseLen = " + nc._sparseLen + ", _len = " + nc._len;
      if( nc._len == 0 ) return;
      if(_len == 0){
        _ls = nc._ls; nc._ls = null;
        _xs = nc._xs; nc._xs = null;
        _id = nc._id; nc._id = null;
        _ds = nc._ds; nc._ds = null;
        _sparseLen = nc._sparseLen;
        _len = nc._len;
        return;
      }
      if(nc.sparse() != sparse()){ // for now, just make it dense
        cancel_sparse();
        nc.cancel_sparse();
      }
      if( _ds != null ) throw H2O.unimpl();
      while( _sparseLen+nc._sparseLen >= _xs.length )
        _xs = MemoryManager.arrayCopyOf(_xs,_xs.length<<1);
      _ls = MemoryManager.arrayCopyOf(_ls,_xs.length);
      System.arraycopy(nc._ls,0,_ls,_sparseLen,nc._sparseLen);
      System.arraycopy(nc._xs,0,_xs,_sparseLen,nc._sparseLen);
      if(_id != null) {
        assert nc._id != null;
        _id = MemoryManager.arrayCopyOf(_id,_xs.length);
        System.arraycopy(nc._id,0,_id,_sparseLen,nc._sparseLen);
        for(int i = _sparseLen; i < _sparseLen + nc._sparseLen; ++i) _id[i] += _len;
      } else assert nc._id == null;
  
      _sparseLen += nc._sparseLen;
      _len += nc._len;
      nc._ls = null;  nc._xs = null; nc._id = null; nc._sparseLen = nc._len = 0;
      assert _sparseLen <= _len;
    }
docs: Append all of 'nc' onto the current NewChunk.  Kill nc.