code: public static ConvexHull ofShapes(final List<Shape> shapes) {
          final Path2D combined = new Path2D.Double();
          for (Shape shape : shapes)
              combined.append(shape, false);
          return new ConvexHull(shapeOf(grahamScan(pointsOf(combined))));
      }
docs: Calculate the convex hull of multiple shapes.
  
  @param shapes Java 2D shapes
  @return the convex hull