Object (Object component, Object block, boolean start, boolean upward, boolean backward, boolean outgo) { Object previous = null; if ((component != null) && (component != block)) { boolean go = ((getClass(component) != "dialog") || (outgo && !getBoolean(component, "modal", false))); if (!start && !upward && go) { previous = getPreviousFocusable(get(component, ":next"), block, false, false, backward, outgo); } if ((previous == null) && ((upward && backward) || (!start && !upward))) { previous = getPreviousFocusable(get(component, "component"), block, false, false, backward, outgo); if ((previous == null) && checkFocusable(component, false)) { previous = component; } } if ((previous == null) && (start || upward) && go) { previous = getPreviousFocusable(getParent(component), component, false, true, backward, outgo); } if ((previous == null) && (start || upward) && !backward && go) { previous = getPreviousFocusable(get(component, ":next"), block, false, false, backward, outgo); } } return previous; }