I propose creating a non-static version of AStar called GenericAStar. AStar would be refactored to create a singleton instance of GenericAStar and pass calls on to that (keeping backwards compatibility with existing code). By making the GenericAStar search methods non-static, it means that the behavior of the AStar algorithm can be modified by setting getters and setters on the search instance to change parameters, strategies, etc. This makes it easier to change the behavior of AStar, as opposed to the current approach, which is to put everything in TraverseOptions, which is now getting huge.
I propose creating a non-static version of AStar called GenericAStar. AStar would be refactored to create a singleton instance of GenericAStar and pass calls on to that (keeping backwards compatibility with existing code). By making the GenericAStar search methods non-static, it means that the behavior of the AStar algorithm can be modified by setting getters and setters on the search instance to change parameters, strategies, etc. This makes it easier to change the behavior of AStar, as opposed to the current approach, which is to put everything in TraverseOptions, which is now getting huge.