@Override
    public List<Relationship> serviceShape(ServiceShape shape) {
        int neededSize = shape.getOperations().size() + shape.getResources().size() + shape.getErrors().size();
        List<Relationship> result = initializeRelationships(shape, neededSize);

        for (ShapeId operation : shape.getOperations()) {
            push(result, shape, RelationshipType.OPERATION, operation);
        }

        for (ShapeId resource : shape.getResources()) {
            push(result, shape, RelationshipType.RESOURCE, resource);
        }

        for (ShapeId errorId : shape.getErrors()) {
            push(result, shape, RelationshipType.ERROR, errorId);
        }

        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