private static List<Rectangle> getShadows(List<Rectangle> list, Point point, Window... windows) {
    if (windows != null) {
      for (Window window : windows) {
        Rectangle bounds = getShadowBounds(point, window);
        if (bounds != null) {
          if (list == null) list = new ArrayList<>();
          list.add(bounds);
        }
        list = getShadows(list, point, window.getOwnedWindows());
      }
    }
    return list;
  }
private static List<Rectangle> getShadows(List<Rectangle> list, Point point, Window... windows)