public class IntLit extends Lit {
  public IntLit(int id) {
  }
  public static Object neg (Number child) {
    return new Integer(- child.intValue());
  }
  public static Object cpl (Number child) {
    return new Integer(~ child.intValue());
  }
  public static Object lt (Number a, Number b) {
    return new Boolean(a.intValue() < b.intValue());
  }
  public static Object le (Number a, Number b) {
    return new Boolean(a.intValue() <= b.intValue());
  }
  public static Object gt (Number a, Number b) {
    return new Boolean(a.intValue() > b.intValue());
  }
  public static Object ge (Number a, Number b) {
    return new Boolean(a.intValue() >= b.intValue());
  }
  public static Object and (Number a, Number b) {
    return new Integer(a.intValue() & b.intValue());
  }
  public static Object xor (Number a, Number b) {
    return new Integer(a.intValue() ^ b.intValue());
  }
  public static Object or (Number a, Number b) {
    return new Integer(a.intValue() | b.intValue());
  }
  public static Object ash (Number a, Number b) {
    return new Integer(a.intValue() >>> b.intValue());
  }
  public static Object lsh (Number a, Number b) {
    return new Integer(a.intValue() << b.intValue());
  }
  public static Object rsh (Number a, Number b) {
    return new Integer(a.intValue() >> b.intValue());
  }
  public static Object add (Number a, Number b) {
    return new Integer(a.intValue() + b.intValue());
  }
  public static Object sub (Number a, Number b) {
    return new Integer(a.intValue() - b.intValue());
  }
  public static Object mul (Number a, Number b) {
    return new Integer(a.intValue() * b.intValue());
  }
  public static Object rem (Number a, Number b) {
    return new Integer(a.intValue() % b.intValue());
  }
  public static Object div (Number a, Number b) {
    return new Integer(a.intValue() / b.intValue());
  }
}

