// Path: EventBus/src/org/greenrobot/eventbus/android/AndroidComponents.java
// public abstract class AndroidComponents {
// 
//     private static final AndroidComponents implementation;
// 
//     static {
//         implementation = AndroidDependenciesDetector.isAndroidSDKAvailable()
//             ? AndroidDependenciesDetector.instantiateAndroidComponents()
//             : null;
//     }
// 
//     public static boolean areAvailable() {
//         return implementation != null;
//     }
// 
//     public static AndroidComponents get() {
//         return implementation;
//     }
// 
//     public final Logger logger;
//     public final MainThreadSupport defaultMainThreadSupport;
// 
//     public AndroidComponents(Logger logger, MainThreadSupport defaultMainThreadSupport) {
//         this.logger = logger;
//         this.defaultMainThreadSupport = defaultMainThreadSupport;
//     }
// }


import org.greenrobot.eventbus.android.AndroidComponents;
import org.greenrobot.eventbus.meta.SubscriberInfoIndex;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
    /** Adds an index generated by EventBus' annotation preprocessor. */
    public EventBusBuilder addIndex(SubscriberInfoIndex index) {
        if (subscriberInfoIndexes == null) {
            subscriberInfoIndexes = new ArrayList<>();
        }
        subscriberInfoIndexes.add(index);
        return this;
    }

    /**
     * Set a specific log handler for all EventBus logging.
     * <p/>
     * By default, all logging is via {@code android.util.Log} on Android or System.out on JVM.
     */
    public EventBusBuilder logger(Logger logger) {
        this.logger = logger;
        return this;
    }

    Logger getLogger() {
        if (logger != null) {
            return logger;
        } else {
            return Logger.Default.get();
        }
    }

    MainThreadSupport getMainThreadSupport() {
        if (mainThreadSupport != null) {
            return mainThreadSupport;
// Path: EventBus/src/org/greenrobot/eventbus/android/AndroidComponents.java
// public abstract class AndroidComponents {
// 
//     private static final AndroidComponents implementation;
// 
//     static {
//         implementation = AndroidDependenciesDetector.isAndroidSDKAvailable()
//             ? AndroidDependenciesDetector.instantiateAndroidComponents()
//             : null;
//     }
// 
//     public static boolean areAvailable() {
//         return implementation != null;
//     }
// 
//     public static AndroidComponents get() {
//         return implementation;
//     }
// 
//     public final Logger logger;
//     public final MainThreadSupport defaultMainThreadSupport;
// 
//     public AndroidComponents(Logger logger, MainThreadSupport defaultMainThreadSupport) {
//         this.logger = logger;
//         this.defaultMainThreadSupport = defaultMainThreadSupport;
//     }
// }


// Path: EventBus/src/org/greenrobot/eventbus/EventBusBuilder.java
import org.greenrobot.eventbus.android.AndroidComponents;
import org.greenrobot.eventbus.meta.SubscriberInfoIndex;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

    /** Adds an index generated by EventBus' annotation preprocessor. */
    public EventBusBuilder addIndex(SubscriberInfoIndex index) {
        if (subscriberInfoIndexes == null) {
            subscriberInfoIndexes = new ArrayList<>();
        }
        subscriberInfoIndexes.add(index);
        return this;
    }

    /**
     * Set a specific log handler for all EventBus logging.
     * <p/>
     * By default, all logging is via {@code android.util.Log} on Android or System.out on JVM.
     */
    public EventBusBuilder logger(Logger logger) {
        this.logger = logger;
        return this;
    }

    Logger getLogger() {
        if (logger != null) {
            return logger;
        } else {
            return Logger.Default.get();
        }
    }

    MainThreadSupport getMainThreadSupport() {
        if (mainThreadSupport != null) {
            return mainThreadSupport;
        } else if (AndroidComponents.areAvailable()) {