@RunsInCurrentThread
 private static @Nonnull Pair<Container, Point> findMaximizeLocation(
     @Nonnull JInternalFrame internalFrame) {
   Container clickTarget = internalFrame.isIcon() ? internalFrame.getDesktopIcon() : internalFrame;
   Point location = maximizeButtonLocation(checkNotNull(clickTarget));
   return Pair.of(clickTarget, location);
 }
 @RunsInCurrentThread
 private static Triple<Boolean, Container, Point> deiconifyInfo(JInternalFrame internalFrame) {
   boolean deiconified = !isIconified(internalFrame);
   if (deiconified) return new Triple<Boolean, Container, Point>(true, null, null);
   JDesktopIcon desktopIcon = internalFrame.getDesktopIcon();
   return new Triple<Boolean, Container, Point>(
       deiconified, desktopIcon, iconifyLocationOf(desktopIcon));
 }
 @RunsInCurrentThread
 private static @Nonnull Triple<Boolean, Container, Point> deiconifyInfo(
     @Nonnull JInternalFrame internalFrame) {
   boolean deiconified = !isIconified(internalFrame);
   if (deiconified) {
     return Triple.of(true, null, null);
   }
   Container desktopIcon = checkNotNull(internalFrame.getDesktopIcon());
   return Triple.of(deiconified, desktopIcon, iconifyButtonLocation(desktopIcon));
 }
 @RunsInCurrentThread
 private static @Nonnull Point findIconifyLocation(JInternalFrame internalFrame) {
   JDesktopIcon desktopIcon = checkNotNull(internalFrame.getDesktopIcon());
   return iconifyButtonLocation(desktopIcon);
 }
 @RunsInCurrentThread
 private static Point findIconifyLocation(JInternalFrame internalFrame) {
   return iconifyLocationOf(internalFrame.getDesktopIcon());
 }
 @RunsInCurrentThread
 private static Pair<Container, Point> findMaximizeLocation(JInternalFrame internalFrame) {
   Container clickTarget = internalFrame.isIcon() ? internalFrame.getDesktopIcon() : internalFrame;
   Point location = maximizeLocationOf(clickTarget);
   return new Pair<Container, Point>(clickTarget, location);
 }