public Client next_client_first_char (Client from, boolean reverse,
    char c, boolean all) {

    Client next = next_client (from, reverse);
    if (next == null) return null; // prevent looping

    boolean state = all ? 
      // no UNMAPPED
      next.state == NORMAL | next.state == HIDDEN | next.state == NO_FOCUS
      : next.state == NORMAL;

    if (next.class_hint != null) {
      String c1 = next.class_hint.res.substring (0, 1);
      String c2 = String.valueOf (c);

      if (state && next.class_hint.res.length () > 0
        && c1.equalsIgnoreCase (c2))

        return next;
    }

    return next_client_first_char (next, reverse, c, all); // recursive
  }