The output of ShortestPaths is not enough. ShortestPaths in Graph/lib is currently in a simple version and can only return the distance to the source vertex. However, the shortest path with intermediate nodes on the path is needed and if two or more paths holds the same shortest distance from source to destination, all these paths need to be returned. In this way, ShortestPaths will be more functional and useful.
I think I have resolved the concern above with a improved version of ShortestPaths which also based on the "pregel" function in GraphOps.
Can I get my code reviewed and merged?