docs: public String typeArgument() throws RecognitionException {
          String typeArgument = "";
          try {
              int first = input.index(), last = first;
              int next = input.LA(1);
              switch (next) {
                  case DRL6Lexer.QUESTION:
                      match(input,
                              DRL6Lexer.QUESTION,
                              null,
                              null,
                              DroolsEditorType.SYMBOL);
                      if (state.failed)
                          return typeArgument;
  
                      if (helper.validateIdentifierKey(DroolsSoftKeywords.EXTENDS)) {
                          match(input,
                                  DRL6Lexer.ID,
                                  DroolsSoftKeywords.EXTENDS,
                                  null,
                                  DroolsEditorType.SYMBOL);
                          if (state.failed)
                              return typeArgument;
  
                          type();
                          if (state.failed)
                              return typeArgument;
                      } else if (helper.validateIdentifierKey(DroolsSoftKeywords.SUPER)) {
                          match(input,
                                  DRL6Lexer.ID,
                                  DroolsSoftKeywords.SUPER,
                                  null,
                                  DroolsEditorType.SYMBOL);
                          if (state.failed)
                              return typeArgument;
                          type();
                          if (state.failed)
                              return typeArgument;
                      }
                      break;
                  case DRL6Lexer.ID:
                      type();
                      if (state.failed)
                          return typeArgument;
                      break;
                  default:
                      // TODO: raise error
              }
              last = input.LT(-1).getTokenIndex();
              typeArgument = input.toString(first,
                      last);
          } catch (RecognitionException re) {
              reportError(re);
          }
          return typeArgument;
      }