private static CompoundInterval abstractionOf(CompoundInterval pValue) {
   if (pValue.isBottom() || pValue.isTop()) {
     return pValue;
   }
   CompoundInterval result = pValue.signum();
   boolean extendToNeg = false;
   if (!pValue.lessThan(result).isDefinitelyFalse()) {
     extendToNeg = true;
   }
   if (!pValue.greaterThan(result).isDefinitelyFalse()) {
     result = result.extendToPositiveInfinity();
   }
   if (extendToNeg) {
     result = result.extendToNegativeInfinity();
   }
   assert result.unionWith(pValue).equals(result);
   return result;
 }