private Optional<String> getResolvedExternalDocs(ExternalDocumentationTrait trait, List<String> enabledKeys) {
        // Get the valid list of lower case names to look for when converting.
        List<String> externalDocKeys = listToLowerCase(enabledKeys);

        // Get lower case keys to check for when converting.
        Map<String, String> traitUrls = trait.getUrls();
        Map<String, String> lowercaseKeyMap = traitUrls.keySet()
                .stream()
                .collect(MapUtils.toUnmodifiableMap(this::toLowerCase, identity()));

        for (String externalDocKey : externalDocKeys) {
            // Compare the lower case name, but use the specified name.
            if (lowercaseKeyMap.containsKey(externalDocKey)) {
                String traitKey = lowercaseKeyMap.get(externalDocKey);
                // Return the url from the trait.
                return Optional.of(traitUrls.get(traitKey));
            }
        }

        // We didn't find any external docs with the a name in the specified set.
        return Optional.empty();
    }
Generates the schema doc urls based on the resource's {@code @externalDocumentation}
trait. This is configurable based on the {@code "sourceDocKeys"} and
{@code "externalDocKeys"} plugin properties.

@see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-sourceUrl">sourceUrl Docs</a>
@see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-documentationurl">documentationUrl Docs</a>
smithy-aws-cloudformation/src/main/java/software/amazon/smithy/aws/cloudformation/schema/fromsmithy/mappers/DocumentationMapper.java