private String getPlaceholder(Symbol symbol) {
            Symbol normalizedSymbol = symbol.toBuilder().references(ListUtils.of()).build();

            // Add symbol to import container
            addImport(normalizedSymbol);

            // Add symbol to symbol map, so we can handle potential type name conflicts
            Set<Symbol> nameSet = symbolNames.computeIfAbsent(normalizedSymbol.getName(), n -> new HashSet<>());
            nameSet.add(normalizedSymbol);

            // Return a placeholder value that will be filled when toString is called
            return format("$${$L:L}", normalizedSymbol.getFullName());
        }
Implements a formatter for {@code $T} that formats Java types.
smithy-trait-codegen/src/main/java/software/amazon/smithy/traitcodegen/writer/TraitCodegenWriter.java