private void addImport(Symbol symbol) {
        addImport(symbol, symbol.getName());
    }
Writes Java code for trait definitions.

<p>This writer supports two custom formatters, a Java type formatter '$T' and
a Base type formatter '$B'.
<dl>
    <dt>{@link JavaTypeFormatter}|{@code 'T'}</dt>
    <dd>This formatter handles the formatting of
    Java types and also ensures that parameterized types (such as {@code List<String>} are
    written correctly.</dd>
    <dt>{@link BaseTypeFormatter}|{@code 'B'}</dt>
    <dd>This formatter allows you to use the base type
    for a trait. For example a String Trait may have a base type of {@code ShapeId}. To write
    this base type, use the {@code $B} formatter and provide the trait symbol. Note that
    if no base type is found (i.e. type is not a trait) then this formatter behaves exactly the
    same as the {@link JavaTypeFormatter}.</dd>
    <dt>{@link CapitalizingFormatter}|{@code 'U'}</dt>
    <dd>This formatter will capitalize the first letter of any string literal it is used to format.</dd>
</dl>
smithy-trait-codegen/src/main/java/software/amazon/smithy/traitcodegen/writer/TraitCodegenWriter.java