private <T extends Enum<?>> T consumeOption(
DmdlSemantics environment, AstAttribute attribute, Map<String, AstAttributeElement> elements,
String key, String description, T[] options) {
AstLiteral literal = take(environment, attribute, elements, key, LiteralKind.STRING);
if (literal != null) {
String symbol = literal.toStringValue();
T value = find(options, symbol);
if (value == null) {
environment.report(new Diagnostic(
Level.ERROR,
literal,