code: private void append2slowd() {
      final int CHUNK_SZ = 1 << H2O.LOG_CHK;
      if( _sparseLen > CHUNK_SZ )
        throw new ArrayIndexOutOfBoundsException(_sparseLen);
      assert _ls==null;
      if(_ds != null && _ds.length > 0){
        if(_id == null){ // check for sparseness
          int nzs = 0; // assume one non-zero for the element currently being stored
          for(double d:_ds)if(d != 0)++nzs;
          if((nzs+1)*_sparseRatio < _len)
            set_sparse(nzs);
        } else _id = MemoryManager.arrayCopyOf(_id, _sparseLen << 1);
        _ds = MemoryManager.arrayCopyOf(_ds,_sparseLen<<1);
      } else {
        alloc_doubles(4);
        if (sparse()) alloc_indices(4);
      }
      assert _sparseLen == 0 || _ds.length > _sparseLen :"_ds.length = " + _ds.length + ", _sparseLen = " + _sparseLen;
    }
docs: Slow-path append data