docs: protected ExpressionContextDescription getExpressionContextDescription() {
  		for (final CodeElementExtractor.ElementDescription containerDescription : getCodeElementExtractor().getTopElements(
  				getGrammar(), getCodeBuilderConfig())) {
  			final AbstractRule rule = getMemberRule(containerDescription);
  			if (rule != null) {
  				final Pattern fieldTypePattern = Pattern.compile(getExpressionConfig().getExpressionFieldTypenamePattern());
  				final ExpressionContextDescription description = getCodeElementExtractor().visitMemberElements(
  						containerDescription, rule, null,
  					(it, grammarContainer, memberContainer, classifier) -> {
  						if (fieldTypePattern.matcher(classifier.getName()).find()) {
  							final Assignment expressionAssignment = findAssignmentFromTerminalPattern(
  									memberContainer,
  									getExpressionConfig().getExpressionGrammarPattern());
  							final CodeElementExtractor.ElementDescription memberDescription =
  									it.newElementDescription(classifier.getName(), memberContainer,
  											classifier, XExpression.class);
  							return new ExpressionContextDescription(
  									containerDescription,
  									memberDescription,
  									ensureContainerKeyword(containerDescription.getGrammarComponent()),
  									ensureFieldDeclarationKeyword(memberDescription),
  									expressionAssignment);
  						}
  						return null;
  					},
  					null);
  				if (description != null) {
  					return description;
  				}
  			}
  		}
  		return null;
  	}