public IntegerWrapper integerLowerBound() {
    { IntervalCache interval = this;

      { Stella_Object lb = interval.lowerBound;

        if (lb != null) {
          { Surrogate testValue000 = Stella_Object.safePrimaryType(lb);

            if (Surrogate.subtypeOfIntegerP(testValue000)) {
              { IntegerWrapper lb000 = ((IntegerWrapper)(lb));

                if (interval.strictLowerBoundP) {
                  return (IntegerWrapper.wrapInteger(IntegerWrapper.unwrapInteger(lb000) + 1));
                }
                else {
                  return (lb000);
                }
              }
            }
            else if (Surrogate.subtypeOfFloatP(testValue000)) {
              { FloatWrapper lb000 = ((FloatWrapper)(lb));

                if (interval.strictLowerBoundP) {
                  if (Stella.integerValuedP(FloatWrapper.unwrapFloat(lb000))) {
                    return (IntegerWrapper.wrapInteger(Native.floor(FloatWrapper.unwrapFloat(lb000)) + 1));
                  }
                  else {
                    return (IntegerWrapper.wrapInteger(Native.ceiling(FloatWrapper.unwrapFloat(lb000))));
                  }
                }
                else {
                  return (IntegerWrapper.wrapInteger(Native.ceiling(FloatWrapper.unwrapFloat(lb000))));
                }
              }
            }
            else {
              return (null);
            }
          }
        }
        return (null);
      }
    }
  }