My input (sharded adjacency lists) for AdjacencyListGraphReader were broken---edges for a single node were split among multiple shards.  Some of the worker threads choked, but the exceptions were silently dropped so I was (unknowingly) working with graphs missing most of their edges!

I'm use require because the condition can only be checked at runtime---a static analyzer should not attempt to prove the condition. See http://stackoverflow.com/a/8002977/448970

That require() check is subject to a race condition---it's not a guarantee.  But it should catch most erroneous inputs without the overhead that a true thread-safe check would imply.