public List<Node> expand(Node node,Problem problem){
  List<Node> successors=new ArrayList<Node>();
  ActionsFunction actionsFunction=problem.getActionsFunction();
  ResultFunction resultFunction=problem.getResultFunction();
  StepCostFunction stepCostFunction=problem.getStepCostFunction();
  for (  Action action : actionsFunction.actions(node.getState())) {
    Object successorState=resultFunction.result(node.getState(),action);
    double stepCost=stepCostFunction.c(node.getState(),action,successorState);
    successors.add(createNode(successorState,node,action,stepCost));
  }
  for (  NodeListener listener : nodeListeners)   listener.onNodeExpanded(node);
  counter++;
  return successors;
}

public List < Node > expand ( Node node , Problem problem ) { List < Node > successors = new ArrayList < Node > ( ) ; ActionsFunction actionsFunction = problem . getActionsFunction ( ) ; ResultFunction resultFunction = problem . getResultFunction ( ) ; StepCostFunction stepCostFunction = problem . getStepCostFunction ( ) ; for ( Action action : actionsFunction . actions ( node . getState ( ) ) ) { Object successorState = resultFunction . result ( node . getState ( ) , action ) ; double stepCost = stepCostFunction . c ( node . getState ( ) , action , successorState ) ; successors . add ( createNode ( successorState , node , action , stepCost ) ) ; } for ( NodeListener listener : nodeListeners ) listener . onNodeExpanded ( node ) ; counter ++ ; return successors ; }
returns the children obtained from expanding the specified node in the specified problem .
