private void validateMapKey(Shape shape, ShapeId target, Model model, List<ValidationEvent> events) {
        model.getShape(target).filter(FunctionalUtils.not(Shape::isStringShape)).ifPresent(resolved -> {
            String message = format("Map key member targets %s, but is expected to target a string", resolved);
            events.add(error(shape, message));
        });
    }
Validates that neighbors target resolvable shapes of the correct type.
smithy-model/src/main/java/software/amazon/smithy/model/validation/validators/TargetValidator.java