These two classes `FIFOStagePoolInfo` and `FIFOSource` contain just a very small amount of logic. Since `StageTable.scala` also has access to the listener, could you just remove these classes and have `StageTable.scala` itself check the scheduling mode and figure out that way how to render the stage? 

Then you could eliminate the `stagePoolInfo` and `stagePoolSource` variables in this class, you could eliminate this codeblock, and you could eliminate both of those classes. In return you have a few lines in `StageTable.scala` that check the scheduling mode.