@SuppressWarnings("unchecked")
    public static <B extends AbstractShapeBuilder<B, S>, S extends Shape> B shapeToBuilder(S shape) {
        return (B) shape.accept(new ShapeToBuilder());
    }
Converts a shape, potentially of an unknown concrete type, into a
Shape builder.

@param shape Shape to create a builder from.
@param <B> Shape builder to create.
@param <S> Shape that is being converted to a builder.
@return Returns a shape builder from the given shape.
smithy-model/src/main/java/software/amazon/smithy/model/shapes/Shape.java