private String parseNamedArgumentName() {
            // Expand a named context value: "$" key ":" identifier
            String name = parseArgumentName();
            parser.expect(':');

            // Consume the character after the colon.
            if (parser.eof()) {
                throw error("Expected an identifier after the ':' in a named argument");
            }

            return name;
        }
A BlockOperation that repeats a template for each value referenced by the block. Each iteration pushes
a state to the writer that includes key, value, key.first, and key.last context properties. The name
of the context property can be customized in the template.
smithy-utils/src/main/java/software/amazon/smithy/utils/CodeFormatter.java