@Override
  public SelDouble assignOps(SelOp op, SelType rhs) {
    SelTypeUtil.checkTypeMatch(this.type(), rhs.type());
    double another = ((SelDouble) rhs).val;
    switch (op) {
      case ASSIGN:
        this.val = another;
        return this;
      case ADD_ASSIGN:
        this.val += another;
        return this;
      case SUB_ASSIGN:
        this.val -= another;
        return this;
      case MUL_ASSIGN:
        this.val *= another;
        return this;
      case DIV_ASSIGN:
        this.val /= another;
        return this;
      case MOD_ASSIGN:
        this.val %= another;
        return this;
      default:
        throw new UnsupportedOperationException(
            "float/Float/double/Doubles DO NOT support assignment operation " + op);
    }
  }
@Test(expected = UnsupportedOperationException.class)
  public void testInvalidAssignOpType() {
    one.assignOps(SelOp.EQUAL, one);
  }