class DefaultClassInjector implements ClassInjector {

    @SuppressWarnings("unchecked")
    @Override
    public void injectStaticMembers(Map<String, Class<?>> classes, Map<String, Class<?>[]> inheritanceTree, ClassLoader classLoader) {
        TypeContainer typeContainer;
        Map<String, Class<? extends Object>[]> castedInheritanceTree = new HashMap<String, Class<? extends Object>[]>(inheritanceTree);
        
        for (Map.Entry<String, Class<?>> type : classes.entrySet()) {
            typeContainer = generateTypeContainer((Class<Object>) type.getValue(), castedInheritanceTree, null, classLoader);
            for (InjectionSet set : typeContainer.getInjectionSets()) {
                injectStaticFields(set, (Object) null, castedInheritanceTree, classLoader);
                injectStaticMethods(set, (Object) null, castedInheritanceTree, classLoader);
            }
        }
    }

    public  DefaultClassInjector();
    public  DefaultClassInjector(TypeConfig config);
    public  DefaultClassInjector(TypeDeterminator typeDeterminator);
    public  DefaultClassInjector(TypeConfig config, TypeDeterminator typeDeterminator);

}