code: @Override
      public DataBucket combineBuckets(final DataBucket[] pBuckets) {
          checkArgument(pBuckets.length > 0, "At least one DataBucket must be provided");
          // create entire bucket..
          final DataBucket returnVal =
              new DataBucket(pBuckets[0].getBucketKey(), pBuckets[0].getLastBucketPointer());
          // ...iterate through the datas and check if it is stored..
          for (int i = 0; i < pBuckets[0].getDatas().length; i++) {
              boolean bucketSkip = false;
              // ... form the newest version to the oldest one..
              for (int j = 0; !bucketSkip && j < pBuckets.length; j++) {
                  // if the data is not set yet but existing in the current version..
                  if (pBuckets[j].getData(i) != null) {
                      // ...break out the loop the next time and..
                      bucketSkip = true;
                      // ...set it
                      returnVal.setData(i, pBuckets[j].getData(i));
                  }
  
              }
          }
          return returnVal;
      }
docs: {@inheritDoc}