private SourceException missingRequiredMembersException(List<String> missingMembersNames) {
        String missingRequired = missingMembersNames.size() > 1 ? "members" : "member";
        String missingMembers = String.join(", ", missingMembersNames);
        String message = String.format("Missing required %s of shape `%s`: %s",
                missingRequired,
                getId(),
                missingMembers);
        return new SourceException(message, getSourceLocation());
    }
This class is package-private, which means that all subclasses of this
class must reside within the same package. Because of this, Shape is a
closed set of known concrete shape types.

@param builder Builder to extract values from.
@param expectMemberSegments True/false if the ID must have a member.
smithy-model/src/main/java/software/amazon/smithy/model/shapes/Shape.java