Some indexes support path restrictions (for example Lucene indexes, if configured to do so). For such cases, the cost of using the index is at most the cost of traversing.
There are two ways to solve this: (1) the index itself could (somehow) ask the counter index about the estimated number of nodes for that path. (2) the query engine can do that itself, so that the index doesn't need to implement this logic.
Let's do approach (2), and add a method supportsPathRestrictions to the IndexPlan interface. If it returns false (default), the behavior is the same as right now. If it returns true, then the cost of the index is adjusted to the estimated number of nodes in this path.