@SuppressWarnings("unchecked")
    public T putFormatter(char identifier, BiFunction<Object, String, String> formatFunction) {
        this.currentState.putFormatter(identifier, formatFunction);
        return (T) this;
    }
Adds a custom formatter expression to the current state of the
{@code AbstractCodeWriter}.

<p>The provided {@code identifier} string must match the following ABNF:

<pre>
%x21-23    ; ( '!' - '#' )
/ %x25-2F  ; ( '%' - '/' )
/ %x3A-60  ; ( ':' - '`' )
/ %x7B-7E  ; ( '{' - '~' )
</pre>

@param identifier Formatter identifier to associate with this formatter.
@param formatFunction Formatter function that formats the given object as a String.
                      The formatter is give the value to format as an object
                      (use .toString to access the string contents) and the
                      current indentation string of the AbstractCodeWriter.
@return Returns self.
smithy-utils/src/main/java/software/amazon/smithy/utils/AbstractCodeWriter.java