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){
        _ms = nc._ms; nc._ms = null;
        _xs = nc._xs; nc._xs = null;
        _id = nc._id; nc._id = null;
        _ds = nc._ds; nc._ds = null;
        _is = nc._is; nc._is = null;
        _ss = nc._ss; nc._ss = null;
        set_sparseLen(nc._sparseLen);
        set_len(nc._len);
        return;
      }
      if(nc.sparseZero() != sparseZero() || nc.sparseNA() != sparseNA()){ // for now, just make it dense
        cancel_sparse();
        nc.cancel_sparse();
      }
      if( _ds != null ) throw H2O.fail();
      for(int i = 0; i < nc._sparseLen; ++i) {
        _ms.set(_sparseLen+i,nc._ms.get(i));
        _xs.set(_sparseLen+i,nc._xs.get(i));
      }
      if(_id != null) {
        assert nc._id != null;
        _id = MemoryManager.arrayCopyOf(_id,_sparseLen + nc._sparseLen);
        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;
  
      set_sparseLen(_sparseLen + nc._sparseLen);
      set_len(_len + nc._len);
      nc._ms = null;  nc._xs = null; nc._id = null; nc.set_sparseLen(nc.set_len(0));
      assert _sparseLen <= _len;
    }
docs: Append all of 'nc' onto the current NewChunk.  Kill nc.