// Path: aircycle-api/src/main/java/com/github/simonpercic/aircycle/ActivityLifecycle.java
// public final class ActivityLifecycle {
// 
//     @IntDef({CREATE, START, RESUME, PAUSE, STOP, SAVE_INSTANCE_STATE, DESTROY})
//     @Retention(RetentionPolicy.SOURCE)
//     public @interface ActivityLifecycleEvent {
//     }
// 
//     public static final int CREATE = 1;
//     public static final int START = 2;
//     public static final int RESUME = 3;
//     public static final int PAUSE = 4;
//     public static final int STOP = 5;
//     public static final int SAVE_INSTANCE_STATE = 6;
//     public static final int DESTROY = 7;
// 
//     private ActivityLifecycle() {
//         // no instance
//     }
// }
// 
// Path: aircycle-api/src/main/java/com/github/simonpercic/aircycle/AirCycleConfig.java
// public final class AirCycleConfig {
// 
//     private final boolean passIntentBundleOnCreate;
//     @Nullable private final Set<Integer> ignoredLifecycleCallbacks;
// 
//     private AirCycleConfig(boolean passIntentBundleOnCreate, @Nullable Set<Integer> ignoredLifecycleCallbacks) {
//         this.passIntentBundleOnCreate = passIntentBundleOnCreate;
//         this.ignoredLifecycleCallbacks = ignoredLifecycleCallbacks;
//     }
// 
//     boolean passIntentBundleOnCreate() {
//         return passIntentBundleOnCreate;
//     }
// 
//     boolean ignoreLifecycleCallback(int lifecycle) {
//         return ignoredLifecycleCallbacks != null
//                 && ignoredLifecycleCallbacks.size() > 0
//                 && ignoredLifecycleCallbacks.contains(lifecycle);
//     }
// 
//     /**
//      * Get a builder for the AirCycleConfig.
//      *
//      * @return AirCycleConfig builder
//      */
//     public static Builder builder() {
//         return new Builder();
//     }
// 
//     /**
//      * AirCycleConfig's builder class.
//      */
//     public static final class Builder {
// 
//         private boolean passIntentBundleOnCreate;
//         @Nullable private Set<Integer> ignoredLifecycleCallbacks;
// 
//         private Builder() {
// 
//         }
// 
//         /**
//          * Whether to pass the Activity's starting Intent Extras Bundle if its savedInstanceState is null in onCreate().
//          *
//          * @param passIntentBundleOnCreate if true, it passes the Activity's starting Intent Extras Bundle only if its
//          * savedInstanceState is null in onCreate()
//          * @return this Builder, for chaining calls
//          */
//         public Builder passIntentBundleOnCreate(boolean passIntentBundleOnCreate) {
//             this.passIntentBundleOnCreate = passIntentBundleOnCreate;
//             return this;
//         }
// 
//         /**
//          * Disable passing of an Activity lifecycle callback from {@link ActivityLifecycle}'s constants.
//          *
//          * @param lifecycleCallback lifecycle callback to ignore
//          * @return this Builder, for chaining calls
//          */
//         public Builder ignoreLifecycleCallback(@ActivityLifecycle.ActivityLifecycleEvent int lifecycleCallback) {
//             switch (lifecycleCallback) {
//                 case ActivityLifecycle.CREATE:
//                 case ActivityLifecycle.START:
//                 case ActivityLifecycle.RESUME:
//                 case ActivityLifecycle.PAUSE:
//                 case ActivityLifecycle.STOP:
//                 case ActivityLifecycle.SAVE_INSTANCE_STATE:
//                 case ActivityLifecycle.DESTROY:
//                     if (ignoredLifecycleCallbacks == null) {
//                         ignoredLifecycleCallbacks = new HashSet<>();
//                     }
// 
//                     ignoredLifecycleCallbacks.add(lifecycleCallback);
//                     return this;
//                 default:
//                     throw new IllegalArgumentException("unknown lifecycle type");
//             }
//         }
// 
//         /**
//          * Build the AirCycleConfig.
//          *
//          * @return built AirCycleConfig
//          */
//         public AirCycleConfig build() {
//             return new AirCycleConfig(passIntentBundleOnCreate, ignoredLifecycleCallbacks);
//         }
//     }
// }
// 
// Path: example/src/main/java/com/github/simonpercic/example/aircycle/listener/BundleListener.java
// public class BundleListener extends ActivityBundleAirCycleLogger {
// 
//     public static final String EXTRA_INT = BundleListener.class.getCanonicalName() + ".extraInt";
// 
//     private int extra;
// 
//     @Override
//     public void onCreate(Bundle bundle) {
//         extra = bundle.getInt(EXTRA_INT);
//     }
// 
//     @Override
//     public void onSaveInstanceState(Bundle outState) {
//         outState.putInt(EXTRA_INT, extra);
//     }
// }


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.github.simonpercic.aircycle.ActivityLifecycle;
import com.github.simonpercic.aircycle.AirCycle;
import com.github.simonpercic.aircycle.AirCycleConfig;
import com.github.simonpercic.example.aircycle.R;
import com.github.simonpercic.example.aircycle.listener.BundleListener;
package com.github.simonpercic.example.aircycle.activity.a08;



/**
 * Example Activity showing usage of a custom AirCycleConfig passed while binding.
 *
 * @author Simon Percic <a href="https://github.com/simonpercic">https://github.com/simonpercic</a>
 */
public class BindConfigActivity extends AppCompatActivity {

    @AirCycle final BundleListener bundleListener = new BundleListener();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
// Path: aircycle-api/src/main/java/com/github/simonpercic/aircycle/ActivityLifecycle.java
// public final class ActivityLifecycle {
// 
//     @IntDef({CREATE, START, RESUME, PAUSE, STOP, SAVE_INSTANCE_STATE, DESTROY})
//     @Retention(RetentionPolicy.SOURCE)
//     public @interface ActivityLifecycleEvent {
//     }
// 
//     public static final int CREATE = 1;
//     public static final int START = 2;
//     public static final int RESUME = 3;
//     public static final int PAUSE = 4;
//     public static final int STOP = 5;
//     public static final int SAVE_INSTANCE_STATE = 6;
//     public static final int DESTROY = 7;
// 
//     private ActivityLifecycle() {
//         // no instance
//     }
// }
// 
// Path: aircycle-api/src/main/java/com/github/simonpercic/aircycle/AirCycleConfig.java
// public final class AirCycleConfig {
// 
//     private final boolean passIntentBundleOnCreate;
//     @Nullable private final Set<Integer> ignoredLifecycleCallbacks;
// 
//     private AirCycleConfig(boolean passIntentBundleOnCreate, @Nullable Set<Integer> ignoredLifecycleCallbacks) {
//         this.passIntentBundleOnCreate = passIntentBundleOnCreate;
//         this.ignoredLifecycleCallbacks = ignoredLifecycleCallbacks;
//     }
// 
//     boolean passIntentBundleOnCreate() {
//         return passIntentBundleOnCreate;
//     }
// 
//     boolean ignoreLifecycleCallback(int lifecycle) {
//         return ignoredLifecycleCallbacks != null
//                 && ignoredLifecycleCallbacks.size() > 0
//                 && ignoredLifecycleCallbacks.contains(lifecycle);
//     }
// 
//     /**
//      * Get a builder for the AirCycleConfig.
//      *
//      * @return AirCycleConfig builder
//      */
//     public static Builder builder() {
//         return new Builder();
//     }
// 
//     /**
//      * AirCycleConfig's builder class.
//      */
//     public static final class Builder {
// 
//         private boolean passIntentBundleOnCreate;
//         @Nullable private Set<Integer> ignoredLifecycleCallbacks;
// 
//         private Builder() {
// 
//         }
// 
//         /**
//          * Whether to pass the Activity's starting Intent Extras Bundle if its savedInstanceState is null in onCreate().
//          *
//          * @param passIntentBundleOnCreate if true, it passes the Activity's starting Intent Extras Bundle only if its
//          * savedInstanceState is null in onCreate()
//          * @return this Builder, for chaining calls
//          */
//         public Builder passIntentBundleOnCreate(boolean passIntentBundleOnCreate) {
//             this.passIntentBundleOnCreate = passIntentBundleOnCreate;
//             return this;
//         }
// 
//         /**
//          * Disable passing of an Activity lifecycle callback from {@link ActivityLifecycle}'s constants.
//          *
//          * @param lifecycleCallback lifecycle callback to ignore
//          * @return this Builder, for chaining calls
//          */
//         public Builder ignoreLifecycleCallback(@ActivityLifecycle.ActivityLifecycleEvent int lifecycleCallback) {
//             switch (lifecycleCallback) {
//                 case ActivityLifecycle.CREATE:
//                 case ActivityLifecycle.START:
//                 case ActivityLifecycle.RESUME:
//                 case ActivityLifecycle.PAUSE:
//                 case ActivityLifecycle.STOP:
//                 case ActivityLifecycle.SAVE_INSTANCE_STATE:
//                 case ActivityLifecycle.DESTROY:
//                     if (ignoredLifecycleCallbacks == null) {
//                         ignoredLifecycleCallbacks = new HashSet<>();
//                     }
// 
//                     ignoredLifecycleCallbacks.add(lifecycleCallback);
//                     return this;
//                 default:
//                     throw new IllegalArgumentException("unknown lifecycle type");
//             }
//         }
// 
//         /**
//          * Build the AirCycleConfig.
//          *
//          * @return built AirCycleConfig
//          */
//         public AirCycleConfig build() {
//             return new AirCycleConfig(passIntentBundleOnCreate, ignoredLifecycleCallbacks);
//         }
//     }
// }
// 
// Path: example/src/main/java/com/github/simonpercic/example/aircycle/listener/BundleListener.java
// public class BundleListener extends ActivityBundleAirCycleLogger {
// 
//     public static final String EXTRA_INT = BundleListener.class.getCanonicalName() + ".extraInt";
// 
//     private int extra;
// 
//     @Override
//     public void onCreate(Bundle bundle) {
//         extra = bundle.getInt(EXTRA_INT);
//     }
// 
//     @Override
//     public void onSaveInstanceState(Bundle outState) {
//         outState.putInt(EXTRA_INT, extra);
//     }
// }


// Path: example/src/main/java/com/github/simonpercic/example/aircycle/activity/a08/BindConfigActivity.java
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.github.simonpercic.aircycle.ActivityLifecycle;
import com.github.simonpercic.aircycle.AirCycle;
import com.github.simonpercic.aircycle.AirCycleConfig;
import com.github.simonpercic.example.aircycle.R;
import com.github.simonpercic.example.aircycle.listener.BundleListener;

package com.github.simonpercic.example.aircycle.activity.a08;



/**
 * Example Activity showing usage of a custom AirCycleConfig passed while binding.
 *
 * @author Simon Percic <a href="https://github.com/simonpercic">https://github.com/simonpercic</a>
 */
public class BindConfigActivity extends AppCompatActivity {

    @AirCycle final BundleListener bundleListener = new BundleListener();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        AirCycleConfig airCycleConfig = AirCycleConfig.builder()