docs: public AttributeDescr attribute(AttributeSupportBuilder<?> as) {
          AttributeDescr attribute = null;
          try {
              if (state.backtracking == 0 && input.LA(1) != DRL6Lexer.EOF) {
                  helper.emit(Location.LOCATION_RULE_HEADER_KEYWORD);
              }
              if (helper.validateIdentifierKey(DroolsSoftKeywords.SALIENCE)) {
                  attribute = salience(as);
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.ENABLED)) {
                  attribute = enabled(as);
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.NO) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.LOOP)) {
                  attribute = booleanAttribute(as,
                          new String[]{DroolsSoftKeywords.NO, "-", DroolsSoftKeywords.LOOP});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.AUTO) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.FOCUS)) {
                  attribute = booleanAttribute(as,
                          new String[]{DroolsSoftKeywords.AUTO, "-", DroolsSoftKeywords.FOCUS});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.LOCK) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.ON) &&
                      helper.validateLT(4,
                              "-") &&
                      helper.validateLT(5,
                              DroolsSoftKeywords.ACTIVE)) {
                  attribute = booleanAttribute(as,
                          new String[]{DroolsSoftKeywords.LOCK, "-", DroolsSoftKeywords.ON, "-", DroolsSoftKeywords.ACTIVE});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.REFRACT)) {
                  attribute = booleanAttribute(as,
                          new String[]{DroolsSoftKeywords.REFRACT});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.DIRECT)) {
                  attribute = booleanAttribute(as,
                          new String[]{DroolsSoftKeywords.DIRECT});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.AGENDA) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.GROUP)) {
                  attribute = stringAttribute(as,
                          new String[]{DroolsSoftKeywords.AGENDA, "-", DroolsSoftKeywords.GROUP});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.GROUP)) {
                  attribute = stringAttribute(as,
                          new String[]{DroolsSoftKeywords.ACTIVATION, "-", DroolsSoftKeywords.GROUP});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.GROUP)) {
                  attribute = stringAttribute(as,
                          new String[]{DroolsSoftKeywords.RULEFLOW, "-", DroolsSoftKeywords.GROUP});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.DATE) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.EFFECTIVE)) {
                  attribute = stringAttribute(as,
                          new String[]{DroolsSoftKeywords.DATE, "-", DroolsSoftKeywords.EFFECTIVE});
                  attribute.setType(AttributeDescr.Type.DATE);
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.DATE) &&
                      helper.validateLT(2,
                              "-") &&
                      helper.validateLT(3,
                              DroolsSoftKeywords.EXPIRES)) {
                  attribute = stringAttribute(as,
                          new String[]{DroolsSoftKeywords.DATE, "-", DroolsSoftKeywords.EXPIRES});
                  attribute.setType(AttributeDescr.Type.DATE);
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.DIALECT)) {
                  attribute = stringAttribute(as,
                          new String[]{DroolsSoftKeywords.DIALECT});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.CALENDARS)) {
                  attribute = stringListAttribute(as,
                          new String[]{DroolsSoftKeywords.CALENDARS});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.TIMER)) {
                  attribute = intOrChunkAttribute(as,
                          new String[]{DroolsSoftKeywords.TIMER});
              } else if (helper.validateIdentifierKey(DroolsSoftKeywords.DURATION)) {
                  attribute = intOrChunkAttribute(as,
                          new String[]{DroolsSoftKeywords.DURATION});
              }
              if (state.backtracking == 0) {
                  helper.emit(Location.LOCATION_RULE_HEADER);
              }
          } catch (RecognitionException re) {
              reportError(re);
          }
          return attribute;
      }