Integer.print()
    self.sys_print_number()
!
Integer.fac
    if self.eq(0)
    then
	^1
    else
	^self * (self - 1).fac
	#^self.sys_mul(self.sys_minus(1).fac)
    endif
!
Integer + (arg)
    ^self.sys_add(arg)
  errorhandler: handle_arithmetic_error()
!
Integer - (arg)
    ^self.sys_minus(arg)
  errorhandler: handle_arithmetic_error()
!
Integer * (arg)
    ^self.sys_mul(arg)
  errorhandler: handle_arithmetic_error()
!

Integer < (n)
    ^self.sys_less(n)
  errorhandler: handle_arithmetic_error()
!
Integer <= (n)
    ^self<n || self == n
  errorhandler: handle_arithmetic_error()
!
Integer > (n)
    ^(self <= n).not
  errorhandler: handle_arithmetic_error()
!
Integer >= (n)
    ^(self < n).not
  errorhandler: handle_arithmetic_error()
!
Integer == (n)
    ^self.eq(n)
  errorhandler: handle_arithmetic_error()
!
Integer.neq(n)
    ^self.eq(n).not
!
Integer.max(n)
    if self>n then self else n endif 
!
Integer.min(n)
    if self<n then self else n endif 

!
Integer.handle_arithmetic_error(ex,carn)
    ex.handle_arithmetic_error()
!
Integer.secure_plus(n)
    self.sys_add(n)
  errorhandler: secure_error_handler()
!
Integer.secure_error_handler(ex,inca)
    #"Eval secure_error_handler".write();
    ex.returnWith(:error_number)



