@SuppressWarnings("unchecked") private <T>T lookDependencyAmongDependants(final Class<T> dependencyType){
  for (int i=dependants.size() - 1; i >= 0; i--) {
    final Object dependant=dependants.get(i);
    if (dependencyType.isAssignableFrom(dependant.getClass())) {
      dependants.remove(dependant);
      return cache(dependencyType,dependant);
    }
  }
  return null;
}

@ SuppressWarnings ( "unchecked" ) private < T > T lookDependencyAmongDependants ( final Class < T > dependencyType ) { for ( int i = dependants . size ( ) - 1 ; i >= 0 ; i -- ) { final Object dependant = dependants . get ( i ) ; if ( dependencyType . isAssignableFrom ( dependant . getClass ( ) ) ) { dependants . remove ( dependant ) ; return cache ( dependencyType , dependant ) ; } } return null ; }
checks it the requested dependency is one of the cached dependent instances .
