throws Throwable
  public Value postincr(int incr)    throws Throwable  {    if (incr > 0) {      StringBuilder tail = new StringBuilder();      for (int i = _value.length() - 1; i >= 0; i--) {        char ch = _value.charAt(i);        if (ch == 'z') {          if (i == 0)            return new StringValueImpl("aa" + tail);          else            tail.insert(0, 'a');        }        else if ('a' <= ch && ch < 'z') {          return new StringValueImpl(_value.substring(0, i) +                                     (char) (ch + 1) +                                     tail);        }        else if (ch == 'Z') {          if (i == 0)            return new StringValueImpl("AA" + tail.toString());          else            tail.insert(0, 'A');        }        else if ('A' <= ch && ch < 'Z') {          return new StringValueImpl(_value.substring(0, i) +                                     (char) (ch + 1) +                                     tail);        }        else if ('0' <= ch && ch <= '9' && i == _value.length() - 1) {          return new LongValue(toLong() + 1);        }      }      return new StringValueImpl(tail.toString());    }    else if (isLongConvertible()) {      return new LongValue(toLong() - 1);    }    else {      return this;    }  }