consider making this a private class (also above in AdjacencyListGraphReader)