anchor.diff:                           ('0'..'9' | 'a'..'f' | 'A'..'F')
                      {
                        try {
  -                         int ch_int = Integer.valueOf(getText().substring(1), 16);
  +                         int ch_int = Integer.valueOf(getText().substring(2), 16);
                            if (ch_int > 0x10ffff) throw new CharEscapeException(this, "Invalid hex escape");
                            setText(String.valueOf(Character.toChars(ch_int)));
                        } catch (NumberFormatException e) {
  
positive.code:                          ('0'..'9' | 'a'..'f' | 'A'..'F')
                     {
                       try {
                           int ch_int = Integer.valueOf(getText().substring(1), 16);
                           if (ch_int > 127) throw new CharEscapeException(this, "Invalid hex escape");
                           setText(String.valueOf((char)ch_int));
                       } catch (NumberFormatException e) {
  
negative.code:                          ('0'..'9' | 'a'..'f' | 'A'..'F')
                     {
                       try {
                           int ch_int = Integer.valueOf(getText().substring(2), 16);
                           if (ch_int > 0x10ffff) throw new CharEscapeException(this, "Invalid hex escape");
                           setText(String.valueOf(Character.toChars(ch_int)));
                       } catch (NumberFormatException e) {
  