docs: protected BlockExpressionContextDescription getBlockExpressionContextDescription() {
  		for (final CodeElementExtractor.ElementDescription containerDescription : getCodeElementExtractor().getTopElements(
  				getGrammar(), getCodeBuilderConfig())) {
  			if (!getCodeBuilderConfig().getNoActionBodyTypes().contains(containerDescription.getName())) {
  				final AbstractRule rule = getMemberRule(containerDescription);
  				if (rule != null) {
  					final BlockExpressionContextDescription description =
  							getCodeElementExtractor().visitMemberElements(containerDescription, rule, null,
  						(it, grammarContainer, memberContainer, classifier) -> {
  									final Assignment expressionAssignment = findAssignmentFromTerminalPattern(
  											memberContainer,
  											getExpressionConfig().getBlockExpressionGrammarPattern());
  									final CodeElementExtractor.ElementDescription memberDescription =
  											it.newElementDescription(
  													classifier.getName(), memberContainer,
  													classifier, XExpression.class);
  									final String keyword = ensureMemberDeclarationKeyword(memberDescription);
  									if (expressionAssignment != null && keyword != null) {
  										return new BlockExpressionContextDescription(
  												containerDescription,
  												memberDescription,
  												ensureContainerKeyword(containerDescription.getGrammarComponent()),
  												keyword,
  												expressionAssignment);
  									}
  									return null;
  								},
  						null);
  					if (description != null) {
  						return description;
  					}
  				}
  			}
  		}
  		return null;
  	}