private List<ValidationEvent> validatePropertyRedefine(ResourceShape resource, Model model) {
        List<ValidationEvent> events = new ArrayList<>();
        if (resource.hasProperties()) {
            Map<String, String> propertyLowerCaseToActual = new HashMap<>();
            for (String propertyName : resource.getProperties().keySet()) {
                propertyLowerCaseToActual.put(propertyName.toLowerCase(Locale.ENGLISH), propertyName);
            }

            for (String identifier : resource.getIdentifiers().keySet()) {
                if (propertyLowerCaseToActual.containsKey(identifier.toLowerCase(Locale.ENGLISH))) {
                    events.add(error(resource,
                            String.format("Resource identifier `%s` cannot also be a"
                                    + " resource property", identifier)));
                }
            }
        }
        return events;
    }
Validates that the resource identifiers of children of a resource contain
all of the identifiers as their parents.
smithy-model/src/main/java/software/amazon/smithy/model/validation/validators/ResourceIdentifierValidator.java