Currently getTransferredContainers is present in AbstractYarnScheduler.
But in ApplicationMasterService, while registering AM, we are calling this method by typecasting it to AbstractYarnScheduler, which is incorrect.
This method should be moved to YarnScheduler.
Because if a custom scheduler is to be added, it will implement YarnScheduler, not AbstractYarnScheduler.
As ApplicationMasterService is calling getTransferredContainers by typecasting it to AbstractYarnScheduler, it is imposing an indirect dependency on AbstractYarnScheduler for any pluggable custom scheduler.
We can move the method to YarnScheduler and leave the definition in AbstractYarnScheduler as it is.