protected void expandNode(
      FormationSearchNode<SymmetricGame, Set<Action>> node,
      Queue<FormationSearchNode<SymmetricGame, Set<Action>>> queue,
      Map<Set<Action>, FormationSearchNode<SymmetricGame, Set<Action>>> nodes,
      int bound) {

    Set<Action> currentPlayerActions = node.getGame().getActions();

    if (currentPlayerActions.size() != actions.length) {

      for (Action action : actions) {

        if (!currentPlayerActions.contains(action)) {

          Set<Action> key = new HashSet<Action>(currentPlayerActions);

          key.add(action);

          if (!nodes.containsKey(key)) {
            double tau = rationalizableFinder.rationalizableTau(action, node.getGame(), getBase());

            if (tau > 0) {
              FormationSearchNode<SymmetricGame, Set<Action>> child = createNode(key, bound);

              if (child != null) {
                queue.offer(child);
                nodes.put(key, child);
              }
            }
          }
        }
      }
    }
  }