public CompoundBitVectorInterval binaryNot(
      boolean pAllowSignedWrapAround, final OverflowEventHandler pOverflowEventHandler) {
    if (isBottom()) {
      return bottom(info);
    }
    CompoundBitVectorInterval result = bottom(info);
    for (BitVectorInterval interval : intervals) {
      if (!interval.isSingleton()) {
        // TODO maybe a more exact implementation is possible?
        return getInternal(info.getRange());
      }
      final BitVectorInterval partialResult;
      if (info.isSigned()) {
        partialResult =
            BitVectorInterval.cast(
                info,
                interval.getLowerBound().not(),
                pAllowSignedWrapAround,
                pOverflowEventHandler);
      } else {
        partialResult =
            BitVectorInterval.cast(
                info,
                new BigInteger(1, interval.getLowerBound().not().toByteArray()),
                pAllowSignedWrapAround,
                pOverflowEventHandler);
      }
      result = result.unionWith(partialResult);
    }
    return result;
  }
public CompoundBitVectorInterval binaryNot(
      boolean pAllowSignedWrapAround, final OverflowEventHandler pOverflowEventHandler) {
    if (isBottom()) {
      return bottom(info);
    }
    CompoundBitVectorInterval result = bottom(info);
    for (BitVectorInterval interval : intervals) {
      if (!interval.isSingleton()) {
       
        return getInternal(info.getRange());
      }
      final BitVectorInterval partialResult;
      if (info.isSigned()) {
        partialResult =
            BitVectorInterval.cast(
                info,
                interval.getLowerBound().not(),
                pAllowSignedWrapAround,
                pOverflowEventHandler);
      } else {
        partialResult =
            BitVectorInterval.cast(
                info,
                new BigInteger(1, interval.getLowerBound().not().toByteArray()),
                pAllowSignedWrapAround,
                pOverflowEventHandler);
      }
      result = result.unionWith(partialResult);
    }
    return result;
  }
public compoundbitvectorinterval binarynot( boolean pallowsignedwraparound, final overfloweventhandler poverfloweventhandler) { if (isbottom()) { return bottom(info); } compoundbitvectorinterval result = bottom(info); for (bitvectorinterval interval : intervals) { if (!interval.issingleton()) { return getinternal(info.getrange()); } final bitvectorinterval partialresult; if (info.issigned()) { partialresult = bitvectorinterval.cast( info, interval.getlowerbound().not(), pallowsignedwraparound, poverfloweventhandler); } else { partialresult = bitvectorinterval.cast( info, new biginteger(1, interval.getlowerbound().not().tobytearray()), pallowsignedwraparound, poverfloweventhandler); } result = result.unionwith(partialresult); } return result; }