docs: @Override
      protected String getInstanceIdName(int id)
      {
          int shifted = id - super.getMaxInstanceId();
          if (1 <= shifted && shifted <= MAX_INSTANCE_ID) {
              switch (shifted) {
                  case Id_multiline:    return "multiline";
                  case Id_STAR:         return "$*";
  
                  case Id_input:        return "input";
                  case Id_UNDERSCORE:   return "$_";
  
                  case Id_lastMatch:    return "lastMatch";
                  case Id_AMPERSAND:    return "$&";
  
                  case Id_lastParen:    return "lastParen";
                  case Id_PLUS:         return "$+";
  
                  case Id_leftContext:  return "leftContext";
                  case Id_BACK_QUOTE:   return "$`";
  
                  case Id_rightContext: return "rightContext";
                  case Id_QUOTE:        return "$'";
              }
              // Must be one of $1..$9, convert to 0..8
              int substring_number = shifted - DOLLAR_ID_BASE - 1;
              char[] buf = { '$', (char)('1' + substring_number) };
              return new String(buf);
          }
          return super.getInstanceIdName(id);
      }