focusTraversalKeys = new Set[3];
focusTraversalKeys = new Set[4];
  public void setFocusTraversalKeys(int id, Set keystrokes)  {    if (id != KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS &&        id != KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS &&        id != KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS &&        id != KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS)      throw new IllegalArgumentException ();    if (keystrokes == null)      {        Container parent = getParent ();        while (parent != null)          {            if (parent.areFocusTraversalKeysSet (id))              {                keystrokes = parent.getFocusTraversalKeys (id);                break;              }            parent = parent.getParent ();          }        if (keystrokes == null)          keystrokes = KeyboardFocusManager.getCurrentKeyboardFocusManager ().            getDefaultFocusTraversalKeys (id);      }    Set sa;    Set sb;    Set sc;    String name;    switch (id)      {      case KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS:        sa = getFocusTraversalKeys          (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);        sb = getFocusTraversalKeys          (KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS);        sc = getFocusTraversalKeys          (KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS);        name = "forwardFocusTraversalKeys";        break;      case KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS:        sa = getFocusTraversalKeys          (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);        sb = getFocusTraversalKeys          (KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS);        sc = getFocusTraversalKeys          (KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS);        name = "backwardFocusTraversalKeys";        break;      case KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS:        sa = getFocusTraversalKeys          (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);        sb = getFocusTraversalKeys          (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);        sc = getFocusTraversalKeys          (KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS);        name = "upCycleFocusTraversalKeys";        break;      case KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS:        sa = getFocusTraversalKeys          (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);        sb = getFocusTraversalKeys          (KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);        sc = getFocusTraversalKeys          (KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS);        name = "downCycleFocusTraversalKeys";        break;      default:      throw new IllegalArgumentException ();      }    int i = keystrokes.size ();    Iterator iter = keystrokes.iterator ();    while (--i >= 0)      {        Object o = iter.next ();        if (!(o instanceof AWTKeyStroke)            || sa.contains (o) || sb.contains (o) || sc.contains (o)            || ((AWTKeyStroke) o).keyCode == KeyEvent.VK_UNDEFINED)          throw new IllegalArgumentException ();      }    if (focusTraversalKeys == null)      focusTraversalKeys = new Set[3];    keystrokes = Collections.unmodifiableSet (new HashSet (keystrokes));    firePropertyChange (name, focusTraversalKeys[id], keystrokes);    focusTraversalKeys[id] = keystrokes;  }