@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 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);
 }