@Override public IntVar intVar() { if (me == null) { IntVar v = e.intVar(); switch (op) { case NEG: me = model.intMinusView(v); break; case ABS: me = model.intAbsView(v); break; case SQR: int[] bounds = VariableUtils.boundsForMultiplication(v, v); me = model.intVar(model.generateName("sqr_exp_"), bounds[0], bounds[1]); model.times(v, v, me).post(); break; default: throw new UnsupportedOperationException( "Unary arithmetic expressions does not support " + op.name()); } } return me; }