code: protected GP solve(AStarNode<ST, PT> startPoint, PT endPoint) {
  		final List<AStarNode<ST, PT>> closeList;
  
  		fireAlgorithmStart(startPoint, endPoint);
  
  		// Run A*
  		closeList = findPath(startPoint, endPoint);
  		if (closeList == null || closeList.isEmpty()) {
  			return null;
  		}
  
  		fireAlgorithmEnd(closeList);
  
  		// Create the path
  		return createPath(startPoint, endPoint, closeList);
  	}
docs: Run the A* algorithm assuming that the graph is oriented is
  an orientation tool was passed to the constructor.
  
  <p>The orientation of the graph may also be overridden by the implementations
  of the {@link AStarNode A* nodes}.
  
  @param startPoint is the starting point.
  @param endPoint is the point to reach.
  @return the found path, or <code>null</code> if none found.