@Override
    public List<Relationship> memberShape(MemberShape shape) {
        Shape container = model.getShape(shape.getContainer()).orElse(null);

        // Emit a relationship from a member back to the enum, but not from an enum member to Unit.
        boolean isEnumShape = container instanceof EnumShape || container instanceof IntEnumShape;
        List<Relationship> result = initializeRelationships(shape, 1 + (isEnumShape ? 0 : 1));
        push(result, shape, RelationshipType.MEMBER_CONTAINER, shape.getContainer());

        if (!isEnumShape) {
            push(result, shape, RelationshipType.MEMBER_TARGET, shape.getTarget());
        }

        return result;
    }
Finds all neighbors of a shape, returning them as a list of
{@link Relationship} objects.

<p>Each neighbor shape that is not in the provided model will
result in a relationship where the optional
{@link Relationship#getNeighborShape() neighbor shape} is empty.

@see NeighborProvider#of
smithy-model/src/main/java/software/amazon/smithy/model/neighbor/NeighborVisitor.java