else { start = 0; end = ncomponents; }  for (int j = start; j != end; ++j) { if (j >= ncomponents) {     if (parent != null) return parent.findNextFocusComponent(this); j -= ncomponents; } if (component[j] instanceof Container) { Component c = component[j]; c = c.findNextFocusComponent(null); if (c != null) return c; } else if (component[j].isFocusTraversable()) return component[j]; }  return null;
  Component findNextFocusComponent(Component child)  {    int start, end;    if (child != null)      {        for (start = 0; start < ncomponents; ++start)          {            if (component[start] == child)              break;          }        end = start;        // This special case lets us be sure to terminate.        if (end == 0)          end = ncomponents;        ++start;      }    else      {        start = 0;        end = ncomponents;      }    for (int j = start; j != end; ++j)      {        if (j >= ncomponents)          {            // The JCL says that we should wrap here.  However, that            // seems wrong.  To me it seems that focus order should be            // global within in given window.  So instead if we reach            // the end we try to look in our parent, if we have one.            if (parent != null)              return parent.findNextFocusComponent(this);            j -= ncomponents;          }        if (component[j] instanceof Container)          {            Component c = component[j];            c = c.findNextFocusComponent(null);            if (c != null)              return c;          }        else if (component[j].isFocusTraversable())          return component[j];      }    return null;  }