docs: protected BaseDescr lhsForall(CEDescrBuilder<?, ?> ce) throws RecognitionException {
          ForallDescrBuilder<?> forall = helper.start(ce,
                  ForallDescrBuilder.class,
                  null);
  
          try {
              match(input,
                      DRL6Lexer.ID,
                      DroolsSoftKeywords.FORALL,
                      null,
                      DroolsEditorType.KEYWORD);
              if (state.failed)
                  return null;
  
              match(input,
                      DRL6Lexer.LEFT_PAREN,
                      null,
                      null,
                      DroolsEditorType.SYMBOL);
              if (state.failed)
                  return null;
  
              do {
                  lhsPatternBind(forall,
                          false);
                  if (state.failed)
                      return null;
  
                  if (input.LA(1) == DRL6Lexer.COMMA) {
                      match(input,
                              DRL6Lexer.COMMA,
                              null,
                              null,
                              DroolsEditorType.SYMBOL);
                      if (state.failed)
                          return null;
                  }
              } while (input.LA(1) != DRL6Lexer.EOF && input.LA(1) != DRL6Lexer.RIGHT_PAREN);
  
              match(input,
                      DRL6Lexer.RIGHT_PAREN,
                      null,
                      null,
                      DroolsEditorType.SYMBOL);
              if (state.failed)
                  return null;
          } finally {
              helper.end(ForallDescrBuilder.class,
                      forall);
          }
  
          return forall != null ? forall.getDescr() : null;
      }