code: public void reduce( AppendableVec nv ) {
      if( this == nv ) return;    // Trivially done
      if( _tmp_espc == nv._tmp_espc ) return;
      // Combine arrays of elements-per-chunk
      long e1[] = nv._tmp_espc;           // Shorter array of longs?
      if (e1.length > _tmp_espc.length) { // Keep longer array
        e1 = _tmp_espc;                   // Keep the shorter one in e1
        _tmp_espc = nv._tmp_espc;         // Keep longer in the object
      }
      for( int i=0; i<e1.length; i++ )      // Copy non-zero elements over
        if( _tmp_espc[i]==0 && e1[i] != 0 ) // Read-filter (old code unconditionally did a R-M-W cycle)
          _tmp_espc[i] = e1[i];             // Only write if needed
    }
docs: Called single-threaded from the M/R framework.