// Path: app/src/whatever/java/com/pacoworks/dereference/ApplicationInjectionComponent.java
// @Singleton
// @Component(modules = {
//         ApplicationModule.class, SerializationModule.class, NetworkModule.class
// })
// public interface ApplicationInjectionComponent extends DependencyDescription {
//     final class Initializer {
//         /* 10 MiB */
//         private static final long CACHE_SIZE = 10 * 1024 * 1024;
// 
//         private Initializer() {
//             /* No instances. */
//         }
// 
//         static ApplicationInjectionComponent init(DereferenceApplication app) {
//             return DaggerApplicationInjectionComponent
//                     .builder()
//                     .applicationModule(new ApplicationModule(app))
//                     .serializationModule(new SerializationModule())
//                     .networkModule(
//                             new NetworkModule(BuildConfig.ENDPOINT, app.getCacheDir(), CACHE_SIZE))
//                     .build();
//         }
//     }
// }
// 
// Path: app/src/main/java/com/pacoworks/dereference/DereferenceApplication.java
// public class DereferenceApplication extends Application {
//     @Inject
//     MainInitialiser mainInitialiser;
// 
//     @Inject
//     FlavourInitialiser flavourInitialiser;
//     private ApplicationInjectionComponent component;
// 
//     public static DereferenceApplication get(Context context) {
//         return (DereferenceApplication)context.getApplicationContext();
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         buildComponentAndInject();
//     }
// 
//     private void buildComponentAndInject() {
//         component = ApplicationInjectionComponent.Initializer.init(this);
//         /* Force initialisers to be created */
//         component.inject(this);
//     }
// 
//     public ApplicationInjectionComponent component() {
//         return component;
//     }
// }
// 
// Path: app/src/main/java/com/pacoworks/dereference/dependencies/ActivityInjectionComponent.java
// public interface ActivityInjectionComponent<T extends ZimplBasePresenter> {
//     void inject(T presenter);
// 
//     void inject(ZimplBaseActivity activity);
// 
//     Activity activity();
// 
//     ZimplBasePresenter presenter();
// 
//     Picasso picasso();
// }


import javax.inject.Inject;
import lombok.AccessLevel;
import lombok.Getter;
import rx.functions.Action1;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.widget.Toast;
import butterknife.ButterKnife;
import com.pacoworks.dereference.ApplicationInjectionComponent;
import com.pacoworks.dereference.BuildConfig;
import com.pacoworks.dereference.DereferenceApplication;
import com.pacoworks.dereference.dependencies.ActivityInjectionComponent;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.picasso.Picasso;
import io.palaima.debugdrawer.DebugDrawer;
import io.palaima.debugdrawer.log.LogModule;
import io.palaima.debugdrawer.module.BuildModule;
import io.palaima.debugdrawer.module.DeviceModule;
import io.palaima.debugdrawer.module.NetworkModule;
import io.palaima.debugdrawer.module.SettingsModule;
import io.palaima.debugdrawer.okhttp.OkHttpModule;
import io.palaima.debugdrawer.picasso.PicassoModule;
import io.palaima.debugdrawer.scalpel.ScalpelModule;
/*
 * Copyright (c) pakoito 2015
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.pacoworks.dereference.dependencies.skeleton;







public abstract class ZimplBaseActivity extends Activity implements IUi {
    private static final String PRESENTER_STATE = "presenter_state";

    @Inject
    Picasso picasso;

    @Inject
    OkHttpClient okHttpClient;

    @Getter(AccessLevel.PROTECTED)
    private ActivityInjectionComponent injector;

    private ZimplBasePresenter presenter;

    private DebugDrawer mDebugDrawer;

    @Override
    @SuppressWarnings("unchecked")
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        injector = startInjector();
        startUi();
        restorePresenter(savedInstanceState, injector);
    }

    @NonNull
    private ActivityInjectionComponent startInjector() {
// Path: app/src/whatever/java/com/pacoworks/dereference/ApplicationInjectionComponent.java
// @Singleton
// @Component(modules = {
//         ApplicationModule.class, SerializationModule.class, NetworkModule.class
// })
// public interface ApplicationInjectionComponent extends DependencyDescription {
//     final class Initializer {
//         /* 10 MiB */
//         private static final long CACHE_SIZE = 10 * 1024 * 1024;
// 
//         private Initializer() {
//             /* No instances. */
//         }
// 
//         static ApplicationInjectionComponent init(DereferenceApplication app) {
//             return DaggerApplicationInjectionComponent
//                     .builder()
//                     .applicationModule(new ApplicationModule(app))
//                     .serializationModule(new SerializationModule())
//                     .networkModule(
//                             new NetworkModule(BuildConfig.ENDPOINT, app.getCacheDir(), CACHE_SIZE))
//                     .build();
//         }
//     }
// }
// 
// Path: app/src/main/java/com/pacoworks/dereference/DereferenceApplication.java
// public class DereferenceApplication extends Application {
//     @Inject
//     MainInitialiser mainInitialiser;
// 
//     @Inject
//     FlavourInitialiser flavourInitialiser;
//     private ApplicationInjectionComponent component;
// 
//     public static DereferenceApplication get(Context context) {
//         return (DereferenceApplication)context.getApplicationContext();
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         buildComponentAndInject();
//     }
// 
//     private void buildComponentAndInject() {
//         component = ApplicationInjectionComponent.Initializer.init(this);
//         /* Force initialisers to be created */
//         component.inject(this);
//     }
// 
//     public ApplicationInjectionComponent component() {
//         return component;
//     }
// }
// 
// Path: app/src/main/java/com/pacoworks/dereference/dependencies/ActivityInjectionComponent.java
// public interface ActivityInjectionComponent<T extends ZimplBasePresenter> {
//     void inject(T presenter);
// 
//     void inject(ZimplBaseActivity activity);
// 
//     Activity activity();
// 
//     ZimplBasePresenter presenter();
// 
//     Picasso picasso();
// }


// Path: app/src/main/java/com/pacoworks/dereference/dependencies/skeleton/ZimplBaseActivity.java
import javax.inject.Inject;
import lombok.AccessLevel;
import lombok.Getter;
import rx.functions.Action1;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.widget.Toast;
import butterknife.ButterKnife;
import com.pacoworks.dereference.ApplicationInjectionComponent;
import com.pacoworks.dereference.BuildConfig;
import com.pacoworks.dereference.DereferenceApplication;
import com.pacoworks.dereference.dependencies.ActivityInjectionComponent;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.picasso.Picasso;
import io.palaima.debugdrawer.DebugDrawer;
import io.palaima.debugdrawer.log.LogModule;
import io.palaima.debugdrawer.module.BuildModule;
import io.palaima.debugdrawer.module.DeviceModule;
import io.palaima.debugdrawer.module.NetworkModule;
import io.palaima.debugdrawer.module.SettingsModule;
import io.palaima.debugdrawer.okhttp.OkHttpModule;
import io.palaima.debugdrawer.picasso.PicassoModule;
import io.palaima.debugdrawer.scalpel.ScalpelModule;

/*
 * Copyright (c) pakoito 2015
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.pacoworks.dereference.dependencies.skeleton;







public abstract class ZimplBaseActivity extends Activity implements IUi {
    private static final String PRESENTER_STATE = "presenter_state";

    @Inject
    Picasso picasso;

    @Inject
    OkHttpClient okHttpClient;

    @Getter(AccessLevel.PROTECTED)
    private ActivityInjectionComponent injector;

    private ZimplBasePresenter presenter;

    private DebugDrawer mDebugDrawer;

    @Override
    @SuppressWarnings("unchecked")
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        injector = startInjector();
        startUi();
        restorePresenter(savedInstanceState, injector);
    }

    @NonNull
    private ActivityInjectionComponent startInjector() {
        final ApplicationInjectionComponent applicationInjectionComponent = DereferenceApplication