public Border getCeiling(boolean ignoreSeparator) {
   if (getIE().onBottom(mascot.getAnchor())) {
     FloorCeiling fc = getIE().getBottom(mascot.getAnchor());
     if (!checkLayering(fc.getArea())) {
       mascot.setCurFC(null);
       return NotOnVisibleBorder.INSTANCE;
     }
     mascot.setCurFC(fc);
     return fc;
   }
   if (getWorkArea().getTopBorder().isOn(mascot.getAnchor())) {
     if (!ignoreSeparator || isScreenTopBottom()) {
       mascot.setCurFC(null);
       return getWorkArea().getTopBorder();
     }
   }
   mascot.setCurFC(null);
   return NotOnBorder.INSTANCE;
 }
 /*
  * getFloor() - Environment check. Checks both the currently active windows
  * and the bottom of the screen. Returns the border if on one. Controls the
  * current Floor/Ceiling attribute of each mascot.
  */
 public Border getFloor(boolean ignoreSeparator) {
   if (getIE().onTop(mascot.getAnchor())) {
     FloorCeiling fc = getIE().getTop(mascot.getAnchor());
     if (!checkLayering(fc.getArea())) {
       mascot.setCurFC(null);
       return NotOnVisibleBorder.INSTANCE;
     }
     if (currentWorkArea == null) currentWorkArea = impl.getWorkArea();
     // Don't let the mascot get footing on any window ceiling within 64px
     // of the top of the screen.
     if (fc.getY() >= currentWorkArea.getTop() + 64) {
       mascot.setCurFC(fc);
       return getIE().getTop(mascot.getAnchor());
     }
   }
   if (getWorkArea().getBottomBorder().isOn(mascot.getAnchor())) {
     if (!ignoreSeparator || isScreenTopBottom()) {
       mascot.setCurFC(null);
       return getWorkArea().getBottomBorder();
     }
   }
   mascot.setCurFC(null);
   return NotOnBorder.INSTANCE;
 }