Modifying LLVM Graph

I digged a little deep and it seems this is quite possible if I extend the GraphWriter class (correct ?) and override the written functions there, but there are few concepts that I am not able to get which are defined in DOTGraphTraits.

  1. EdgeSource

  2. EdgeTarget

  3. edgeTargetsEdgeSource

Can you please give an example making use of above terms and demonstrating what exactly these terms means ?