// Path: Proton/src/main/java/proton/inject/Proton.java
// public final class Proton {
//     private static Map<Context, InjectorImpl> sInjectors;
//     private static Bindings sBindings;
//     private static ProviderListeners sProviderListeners;
//     private static FieldListeners sFieldListeners;
// 
//     private Proton() {
//     }
// 
//     public static void initialize(Application app) {
//         initialize(app, new DefaultModule());
//     }
// 
//     public static void initialize(Application app, Module... modules) {
//         synchronized (Proton.class) {
//             checkState(sInjectors == null, "Already initialized Proton");
//             sInjectors = new WeakHashMap<Context, InjectorImpl>();
//             sBindings = new Bindings();
//             sProviderListeners = new ProviderListeners();
//             sFieldListeners = new FieldListeners();
// 
//             for (Module module : modules)
//                 module.configure(sBindings, sProviderListeners, sFieldListeners);
// 
//             InjectorImpl injector = new InjectorImpl(app, sBindings, sProviderListeners, sFieldListeners, null);
//             sInjectors.put(app, injector);
//         }
//     }
// 
//     public static Injector getInjector(Context context) {
//         synchronized (Proton.class) {
//             checkInitialize();
//             InjectorImpl injector = sInjectors.get(context);
//             if (injector == null) {
//                 InjectorImpl parent = sInjectors.get(context.getApplicationContext());
//                 injector = new InjectorImpl(context, sBindings, sProviderListeners, sFieldListeners, parent);
//                 sInjectors.put(context, injector);
//             }
//             return injector;
//         }
//     }
// 
//     public static void destroy() {
//         synchronized (Proton.class) {
//             checkInitialize();
//             sProviderListeners = null;
//             sBindings = null;
//             sInjectors = null;
//         }
//     }
// 
//     public static void destroyInjector(Context context) {
//         synchronized (Proton.class) {
//             checkInitialize();
//             sInjectors.remove(context);
//         }
//     }
// 
//     private static void checkInitialize() {
//         checkNotNull(sInjectors, "Proton is not initialized yet");
//     }
// }


import android.content.Context;
import android.widget.ArrayAdapter;
import java.util.List;
import proton.inject.Proton;
package proton.inject.widget;




/**
 * @author keishin.yokomaku
 */
public class ProtonArrayAdapter<T> extends ArrayAdapter<T> {
    public ProtonArrayAdapter(Context context, int resource) {
        super(context, resource);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, int textViewResourceId) {
        super(context, resource, textViewResourceId);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, T[] objects) {
        super(context, resource, objects);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) {
        super(context, resource, textViewResourceId, objects);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, List<T> objects) {
        super(context, resource, objects);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) {
        super(context, resource, textViewResourceId, objects);
// Path: Proton/src/main/java/proton/inject/Proton.java
// public final class Proton {
//     private static Map<Context, InjectorImpl> sInjectors;
//     private static Bindings sBindings;
//     private static ProviderListeners sProviderListeners;
//     private static FieldListeners sFieldListeners;
// 
//     private Proton() {
//     }
// 
//     public static void initialize(Application app) {
//         initialize(app, new DefaultModule());
//     }
// 
//     public static void initialize(Application app, Module... modules) {
//         synchronized (Proton.class) {
//             checkState(sInjectors == null, "Already initialized Proton");
//             sInjectors = new WeakHashMap<Context, InjectorImpl>();
//             sBindings = new Bindings();
//             sProviderListeners = new ProviderListeners();
//             sFieldListeners = new FieldListeners();
// 
//             for (Module module : modules)
//                 module.configure(sBindings, sProviderListeners, sFieldListeners);
// 
//             InjectorImpl injector = new InjectorImpl(app, sBindings, sProviderListeners, sFieldListeners, null);
//             sInjectors.put(app, injector);
//         }
//     }
// 
//     public static Injector getInjector(Context context) {
//         synchronized (Proton.class) {
//             checkInitialize();
//             InjectorImpl injector = sInjectors.get(context);
//             if (injector == null) {
//                 InjectorImpl parent = sInjectors.get(context.getApplicationContext());
//                 injector = new InjectorImpl(context, sBindings, sProviderListeners, sFieldListeners, parent);
//                 sInjectors.put(context, injector);
//             }
//             return injector;
//         }
//     }
// 
//     public static void destroy() {
//         synchronized (Proton.class) {
//             checkInitialize();
//             sProviderListeners = null;
//             sBindings = null;
//             sInjectors = null;
//         }
//     }
// 
//     public static void destroyInjector(Context context) {
//         synchronized (Proton.class) {
//             checkInitialize();
//             sInjectors.remove(context);
//         }
//     }
// 
//     private static void checkInitialize() {
//         checkNotNull(sInjectors, "Proton is not initialized yet");
//     }
// }


// Path: Proton/src/main/java/proton/inject/widget/ProtonArrayAdapter.java
import android.content.Context;
import android.widget.ArrayAdapter;
import java.util.List;
import proton.inject.Proton;

package proton.inject.widget;




/**
 * @author keishin.yokomaku
 */
public class ProtonArrayAdapter<T> extends ArrayAdapter<T> {
    public ProtonArrayAdapter(Context context, int resource) {
        super(context, resource);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, int textViewResourceId) {
        super(context, resource, textViewResourceId);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, T[] objects) {
        super(context, resource, objects);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) {
        super(context, resource, textViewResourceId, objects);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, List<T> objects) {
        super(context, resource, objects);
        Proton.getInjector(context).inject(this);
    }

    public ProtonArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) {
        super(context, resource, textViewResourceId, objects);
        Proton.getInjector(context).inject(this);