I tried to use runtime refleciton, and found some difficults. because amResp will have different type, I've to give it a duck type like

AnyRef {
  def getAllocatedContainers ...
  def getAvailableResources ...
  def getCompletedContainersStatuses ...
}

or have to cache four reflection methods (the upper three plus getAMResponse()). in the future, each time we introduce a method of AMResponse/AllocateResponse, we'll have to make additional cache for it.