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);
	}
protected GP solve ( AStarNode < ST , PT > startPoint , PT endPoint ) { final List < AStarNode < ST , PT > > closeList ; fireAlgorithmStart ( startPoint , endPoint ) ; closeList = findPath ( startPoint , endPoint ) ; if ( closeList == null || closeList . isEmpty ( ) ) { return null ; } fireAlgorithmEnd ( closeList ) ; return createPath ( startPoint , endPoint , closeList ) ; }
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.