What does the number mean in the incomingVirtualEdge?

When I print incomingVirtualEdge or outgoingVirtualEdge to the console, it shows something like this, 133009 → 8330, what does the number mean here? And if a gps observation point is projected to a directed edge, why do we need two instances of State class for the same edge? Isn’t it enough to use one state to represent a directed edge, because it has only one direction?

You need to look at the toString() method of VirtualEdgeIteratorState to figure this out. Possibly there are two State objects for the same edge even though only one would be really necessary, but it was easier to implement using two. Not sure.

what is the diffference between EdgeIterator and EdgeIteratorState, why need EdgeIterator when we have EdgeIteratorState?