// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/exception/MethodArgumentsException.java
// public class MethodArgumentsException extends Exception {
// 
//     public MethodArgumentsException(String message) {
//         super(message);
//     }
// }
// 
// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/model/type/ActivityLifecycleType.java
// public enum ActivityLifecycleType {
//     CREATE,
//     START,
//     RESUME,
//     PAUSE,
//     STOP,
//     SAVE_INSTANCE_STATE,
//     DESTROY
// }
// 
// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/model/type/ListenerArgType.java
// public enum ListenerArgType {
//     ACTIVITY,
//     BUNDLE
// }
// 
// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/utils/StringUtils.java
// public final class StringUtils {
// 
//     private StringUtils() {
//         // no instance
//     }
// 
//     /**
//      * Returns <tt>true</tt> if the charSequence is null or of zero length.
//      *
//      * @param charSequence char sequence
//      * @return <tt>true</tt> if charSequence is null or of zero length
//      */
//     public static boolean isEmpty(CharSequence charSequence) {
//         return charSequence == null || charSequence.length() == 0;
//     }
// }


import com.github.simonpercic.aircycle.exception.MethodArgumentsException;
import com.github.simonpercic.aircycle.model.type.ActivityLifecycleType;
import com.github.simonpercic.aircycle.model.type.ListenerArgType;
import com.github.simonpercic.aircycle.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
    }

    public List<ListenerArgType> getArgs() {
        return args;
    }

    public static Builder builder(ActivityLifecycleType activityLifecycle, String methodName) {
        if (activityLifecycle == null) {
            throw new IllegalArgumentException("activityLifecycle is null");
        }

        if (StringUtils.isEmpty(methodName)) {
            throw new IllegalArgumentException("methodName is empty");
        }

        return new Builder(activityLifecycle, methodName);
    }

    public static class Builder {

        private final ActivityLifecycleType lifecycleType;
        private final String methodName;
        private final List<ListenerArgType> args;

        private Builder(ActivityLifecycleType lifecycleType, String methodName) {
            this.lifecycleType = lifecycleType;
            this.methodName = methodName;
            this.args = new ArrayList<>(2);
        }

// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/exception/MethodArgumentsException.java
// public class MethodArgumentsException extends Exception {
// 
//     public MethodArgumentsException(String message) {
//         super(message);
//     }
// }
// 
// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/model/type/ActivityLifecycleType.java
// public enum ActivityLifecycleType {
//     CREATE,
//     START,
//     RESUME,
//     PAUSE,
//     STOP,
//     SAVE_INSTANCE_STATE,
//     DESTROY
// }
// 
// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/model/type/ListenerArgType.java
// public enum ListenerArgType {
//     ACTIVITY,
//     BUNDLE
// }
// 
// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/utils/StringUtils.java
// public final class StringUtils {
// 
//     private StringUtils() {
//         // no instance
//     }
// 
//     /**
//      * Returns <tt>true</tt> if the charSequence is null or of zero length.
//      *
//      * @param charSequence char sequence
//      * @return <tt>true</tt> if charSequence is null or of zero length
//      */
//     public static boolean isEmpty(CharSequence charSequence) {
//         return charSequence == null || charSequence.length() == 0;
//     }
// }


// Path: aircycle-compiler/src/main/java/com/github/simonpercic/aircycle/model/ListenerMethod.java
import com.github.simonpercic.aircycle.exception.MethodArgumentsException;
import com.github.simonpercic.aircycle.model.type.ActivityLifecycleType;
import com.github.simonpercic.aircycle.model.type.ListenerArgType;
import com.github.simonpercic.aircycle.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;

    }

    public List<ListenerArgType> getArgs() {
        return args;
    }

    public static Builder builder(ActivityLifecycleType activityLifecycle, String methodName) {
        if (activityLifecycle == null) {
            throw new IllegalArgumentException("activityLifecycle is null");
        }

        if (StringUtils.isEmpty(methodName)) {
            throw new IllegalArgumentException("methodName is empty");
        }

        return new Builder(activityLifecycle, methodName);
    }

    public static class Builder {

        private final ActivityLifecycleType lifecycleType;
        private final String methodName;
        private final List<ListenerArgType> args;

        private Builder(ActivityLifecycleType lifecycleType, String methodName) {
            this.lifecycleType = lifecycleType;
            this.methodName = methodName;
            this.args = new ArrayList<>(2);
        }

        public Builder addBundleArg() throws MethodArgumentsException {