Union extends BinaryExpr { @Override public boolean contains(@Nonnull final GeoArea area) { if (opLeft.overlaps(opRight)) { return boundingBox().contains(area); } else { return opLeft.contains(area) || opRight.contains(area); } } Union(
            @Nonnull final GeoArea opLeft,
            @Nonnull final GeoArea opRight); @Override boolean overlaps(@Nonnull final GeoArea area); @Override boolean contains(@Nonnull final GeoArea area); @Override boolean contains(@Nonnull final GeoPoint point); @Nonnull @Override Union translate(@Nonnull final GeoVector vector); @Nonnull @Override Union moveTo(@Nonnull final GeoPoint origin); @Override @Nonnull GeoRectangle boundingBox(); @Override boolean canEqual(@Nonnull final Object obj); @Override boolean equals(@Nullable final Object obj); @Override int hashCode();  }
@Test public void testContains() { LOG.info("testContains"); final GeoArea a1 = new GeoCircle(new GeoPoint(1.0, 1.0), 2.0); final GeoRectangle a2 = new GeoRectangle(new GeoPoint(1.0, -1.0), new GeoPoint(4.0, 3.0)); final Union u = new Union(a1, a2); Assert.assertTrue(u.contains(a1)); Assert.assertTrue(u.contains(a2)); }