public Iterator<Shape> iterateShapes(Shape shape) {
        return iterateShapes(shape, FunctionalUtils.alwaysTrue());
    }
Lazily iterates over all of the relationships in the closure of
the given shape, including the given shape.

@param shape Shape to find the closure of.
@return Returns an iterator of shapes connected to {@code shape}.
smithy-model/src/main/java/software/amazon/smithy/model/neighbor/Walker.java