code: public void search(SearchListener<N> listener){
          Iterator<N> it = iterator();
          while(it.hasNext()){
              listener.handle(it.next());
          }
      }
docs: <p>
  Executes the search algorithm and invokes the method
  {@link SearchListener#handle(Object)} passing the current
  explored node to the listener.
  </p>
  
  <pre class="prettyprint">
  {@code Hipster.createDijkstra(problem).search(new Algorithm.SearchListener() {
  @Override
  public void handle(Node node) {
  // Do something with the node.
  }
  });
  }
  </pre>
  
  @param listener listener used to receive the explored nodes.