public synchronized boolean isNewerThanOrCanFillExceptionsFor(RegionVersionHolder<T> source){
  if (source == null || getVersion() > source.getVersion()) {
    return true;
  }
  RegionVersionHolder<T> other=source.clone();
  mergeBitSet();
  other.mergeBitSet();
  List<RVVException> mine=canonicalExceptions(this.exceptions);
  Iterator<RVVException> myIterator=mine.iterator();
  List<RVVException> his=canonicalExceptions(other.exceptions);
  Iterator<RVVException> otherIterator=his.iterator();
  RVVException myException=myIterator.hasNext() ? myIterator.next() : null;
  RVVException otherException=otherIterator.hasNext() ? otherIterator.next() : null;
  while ((otherException != null && otherException.previousVersion > this.version) || isSpecialException(otherException,other)) {
    otherException=otherIterator.hasNext() ? otherIterator.next() : null;
  }
  while (otherException != null) {
    if (myException == null) {
      return true;
    }
    if (isSpecialException(myException,this)) {
      myException=myIterator.hasNext() ? myIterator.next() : null;
      continue;
    }
    if (isSpecialException(otherException,other)) {
      otherException=otherIterator.hasNext() ? otherIterator.next() : null;
      continue;
    }
    if (myException.previousVersion >= otherException.nextVersion) {
      myException=myIterator.hasNext() ? myIterator.next() : null;
      continue;
    }
    if (otherException.previousVersion >= myException.nextVersion) {
      return true;
    }
    if ((myException.previousVersion == otherException.previousVersion) && (myException.nextVersion == otherException.nextVersion)) {
      myException=myIterator.hasNext() ? myIterator.next() : null;
      otherException=otherIterator.hasNext() ? otherIterator.next() : null;
      continue;
    }
    if ((otherException.previousVersion < myException.previousVersion) || (myException.nextVersion < otherException.nextVersion)) {
      return true;
    }
    otherException=otherIterator.hasNext() ? otherIterator.next() : null;
  }
  return false;
}

public synchronized boolean isNewerThanOrCanFillExceptionsFor ( RegionVersionHolder < T > source ) { if ( source == null || getVersion ( ) > source . getVersion ( ) ) { return true ; } RegionVersionHolder < T > other = source . clone ( ) ; mergeBitSet ( ) ; other . mergeBitSet ( ) ; List < RVVException > mine = canonicalExceptions ( this . exceptions ) ; Iterator < RVVException > myIterator = mine . iterator ( ) ; List < RVVException > his = canonicalExceptions ( other . exceptions ) ; Iterator < RVVException > otherIterator = his . iterator ( ) ; RVVException myException = myIterator . hasNext ( ) ? myIterator . next ( ) : null ; RVVException otherException = otherIterator . hasNext ( ) ? otherIterator . next ( ) : null ; while ( ( otherException != null && otherException . previousVersion > this . version ) || isSpecialException ( otherException , other ) ) { otherException = otherIterator . hasNext ( ) ? otherIterator . next ( ) : null ; } while ( otherException != null ) { if ( myException == null ) { return true ; } if ( isSpecialException ( myException , this ) ) { myException = myIterator . hasNext ( ) ? myIterator . next ( ) : null ; continue ; } if ( isSpecialException ( otherException , other ) ) { otherException = otherIterator . hasNext ( ) ? otherIterator . next ( ) : null ; continue ; } if ( myException . previousVersion >= otherException . nextVersion ) { myException = myIterator . hasNext ( ) ? myIterator . next ( ) : null ; continue ; } if ( otherException . previousVersion >= myException . nextVersion ) { return true ; } if ( ( myException . previousVersion == otherException . previousVersion ) && ( myException . nextVersion == otherException . nextVersion ) ) { myException = myIterator . hasNext ( ) ? myIterator . next ( ) : null ; otherException = otherIterator . hasNext ( ) ? otherIterator . next ( ) : null ; continue ; } if ( ( otherException . previousVersion < myException . previousVersion ) || ( myException . nextVersion < otherException . nextVersion ) ) { return true ; } otherException = otherIterator . hasNext ( ) ? otherIterator . next ( ) : null ; } return false ; }
returns true if this holder has seen versions that the other holder hasn ' t
