// Path: phial-overlay/src/main/java/com/mindcoders/phial/TargetScreen.java
// public class TargetScreen {
//     private final Class<? extends Activity> target;
//     private final String scope;
// 
// 
//     TargetScreen(Class<? extends Activity> target, String scope) {
//         this.target = target;
//         this.scope = scope;
//     }
// 
//     /**
//      * Creates a {@link TargetScreen} with activity as a target.
//      * @param target activity.
//      */
//     public static TargetScreen forActivity(Class<? extends Activity> target) {
//         return new TargetScreen(target, null);
//     }
// 
//     /**
//      * Creates a {@link TargetScreen} with custom scope as a target.
//      * @param scope scope name.
//      */
//     public static TargetScreen forScope(String scope) {
//         return new TargetScreen(null, scope);
//     }
// 
//     public Class<? extends Activity> getTargetActivity() {
//         return target;
//     }
// 
//     public String getScopeName() {
//         return scope;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         TargetScreen that = (TargetScreen) o;
// 
//         if (target != null ? !target.equals(that.target) : that.target != null) return false;
//         return scope != null ? scope.equals(that.scope) : that.scope == null;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = target != null ? target.hashCode() : 0;
//         result = 31 * result + (scope != null ? scope.hashCode() : 0);
//         return result;
//     }
// 
//     /**
//      * Returns either activity name or custom scope name.
//      * @return target name.
//      */
//     public String getName() {
//         if (target != null) {
//             return target.getSimpleName();
//         }
// 
//         return scope;
//     }
// }
// 
// Path: phial-overlay/src/main/java/com/mindcoders/phial/internal/util/CollectionUtils.java
// public final class CollectionUtils {
// 
//     private CollectionUtils() {
//         // hide
//     }
// 
// 
//     public interface Predicate<T> {
//         boolean apply(T type);
//     }
// 
//     public interface Function1<T, G> {
//         T call(G value);
//     }
// 
//     public static <L> ArrayList<L> filter(List<L> list, Predicate<L> predicate) {
//         ArrayList<L> result = new ArrayList<L>();
//         for (L element : list) {
//             if (predicate.apply(element)) {
//                 result.add(element);
//             }
//         }
//         return result;
//     }
// 
//     public static <T, G> ArrayList<T> map(List<G> input, Function1<T, G> function) {
//         ArrayList<T> result = new ArrayList<T>(input.size());
//         for (G item : input) {
//             result.add(function.call(item));
//         }
//         return result;
//     }
// 
//     public static <T, G> Set<T> map(Set<G> input, Function1<T, G> function) {
//         Set<T> result = new HashSet<T>(input.size());
//         for (G item : input) {
//             result.add(function.call(item));
//         }
//         return result;
//     }
// 
//     public static boolean isNullOrEmpty(Collection<?> input) {
//         return input == null || input.isEmpty();
//     }
// 
//     public static List<Integer> asList(int... ids) {
//         final List<Integer> result = new ArrayList<>(ids.length);
//         for (int id : ids) {
//             result.add(id);
//         }
//         return result;
//     }
// 
//     public static <T> Set<T> asSet(T... items) {
//         final HashSet<T> result = new HashSet<>(items.length);
//         result.addAll(Arrays.asList(items));
//         return Collections.unmodifiableSet(result);
//     }
// }
// 
// Path: phial-overlay/src/main/java/com/mindcoders/phial/internal/util/Precondition.java
// public final class Precondition {
//     private Precondition() {
//         //to hide-
//     }
// 
//     public static <T> T notNull(T item, String message) {
//         if (item == null) {
//             throw new IllegalArgumentException(message);
//         }
// 
//         return item;
//     }
// 
//     public static void calledFromTools(View view) {
//         if (!view.isInEditMode()) {
//             throw new IllegalArgumentException("should be called only from AndroidStudioTools");
//         }
//     }
// 
//     public static void notImplemented(String what, Context context) {
//         Toast.makeText(context, what + " is NOT Implemented yet", Toast.LENGTH_SHORT).show();
//     }
// 
//     public static void isTrue(boolean condition, String message) {
//         if (!condition) {
//             throw new IllegalArgumentException(message);
//         }
//     }
// 
//     public static <T> void notEmpty(T[] array, String message) {
//         if (array == null || array.length == 0) {
//             throw new IllegalArgumentException(message);
//         }
//     }
// 
//     public static void notEmpty(int[] array, String message) {
//         if (array == null || array.length == 0) {
//             throw new IllegalArgumentException(message);
//         }
//     }
// }


import android.text.TextUtils;
import com.mindcoders.phial.TargetScreen;
import com.mindcoders.phial.internal.util.CollectionUtils;
import com.mindcoders.phial.internal.util.Precondition;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
package com.mindcoders.phial.autofill;





public class AutoFillerBuilder {
    private final TargetScreen targetScreen;
    private List<Integer> targetIds;
    private List<FillOption> options = new ArrayList<>();

    AutoFillerBuilder(TargetScreen targetScreen) {
        this.targetScreen = targetScreen;
    }

    /**
     * Sets view ids to fill.
     *
     * @param ids identifiers of views to be filled. Cannot be empty.
     */
    public AutoFillerBuilder fill(int... ids) {
// Path: phial-overlay/src/main/java/com/mindcoders/phial/TargetScreen.java
// public class TargetScreen {
//     private final Class<? extends Activity> target;
//     private final String scope;
// 
// 
//     TargetScreen(Class<? extends Activity> target, String scope) {
//         this.target = target;
//         this.scope = scope;
//     }
// 
//     /**
//      * Creates a {@link TargetScreen} with activity as a target.
//      * @param target activity.
//      */
//     public static TargetScreen forActivity(Class<? extends Activity> target) {
//         return new TargetScreen(target, null);
//     }
// 
//     /**
//      * Creates a {@link TargetScreen} with custom scope as a target.
//      * @param scope scope name.
//      */
//     public static TargetScreen forScope(String scope) {
//         return new TargetScreen(null, scope);
//     }
// 
//     public Class<? extends Activity> getTargetActivity() {
//         return target;
//     }
// 
//     public String getScopeName() {
//         return scope;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         TargetScreen that = (TargetScreen) o;
// 
//         if (target != null ? !target.equals(that.target) : that.target != null) return false;
//         return scope != null ? scope.equals(that.scope) : that.scope == null;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = target != null ? target.hashCode() : 0;
//         result = 31 * result + (scope != null ? scope.hashCode() : 0);
//         return result;
//     }
// 
//     /**
//      * Returns either activity name or custom scope name.
//      * @return target name.
//      */
//     public String getName() {
//         if (target != null) {
//             return target.getSimpleName();
//         }
// 
//         return scope;
//     }
// }
// 
// Path: phial-overlay/src/main/java/com/mindcoders/phial/internal/util/CollectionUtils.java
// public final class CollectionUtils {
// 
//     private CollectionUtils() {
//         // hide
//     }
// 
// 
//     public interface Predicate<T> {
//         boolean apply(T type);
//     }
// 
//     public interface Function1<T, G> {
//         T call(G value);
//     }
// 
//     public static <L> ArrayList<L> filter(List<L> list, Predicate<L> predicate) {
//         ArrayList<L> result = new ArrayList<L>();
//         for (L element : list) {
//             if (predicate.apply(element)) {
//                 result.add(element);
//             }
//         }
//         return result;
//     }
// 
//     public static <T, G> ArrayList<T> map(List<G> input, Function1<T, G> function) {
//         ArrayList<T> result = new ArrayList<T>(input.size());
//         for (G item : input) {
//             result.add(function.call(item));
//         }
//         return result;
//     }
// 
//     public static <T, G> Set<T> map(Set<G> input, Function1<T, G> function) {
//         Set<T> result = new HashSet<T>(input.size());
//         for (G item : input) {
//             result.add(function.call(item));
//         }
//         return result;
//     }
// 
//     public static boolean isNullOrEmpty(Collection<?> input) {
//         return input == null || input.isEmpty();
//     }
// 
//     public static List<Integer> asList(int... ids) {
//         final List<Integer> result = new ArrayList<>(ids.length);
//         for (int id : ids) {
//             result.add(id);
//         }
//         return result;
//     }
// 
//     public static <T> Set<T> asSet(T... items) {
//         final HashSet<T> result = new HashSet<>(items.length);
//         result.addAll(Arrays.asList(items));
//         return Collections.unmodifiableSet(result);
//     }
// }
// 
// Path: phial-overlay/src/main/java/com/mindcoders/phial/internal/util/Precondition.java
// public final class Precondition {
//     private Precondition() {
//         //to hide-
//     }
// 
//     public static <T> T notNull(T item, String message) {
//         if (item == null) {
//             throw new IllegalArgumentException(message);
//         }
// 
//         return item;
//     }
// 
//     public static void calledFromTools(View view) {
//         if (!view.isInEditMode()) {
//             throw new IllegalArgumentException("should be called only from AndroidStudioTools");
//         }
//     }
// 
//     public static void notImplemented(String what, Context context) {
//         Toast.makeText(context, what + " is NOT Implemented yet", Toast.LENGTH_SHORT).show();
//     }
// 
//     public static void isTrue(boolean condition, String message) {
//         if (!condition) {
//             throw new IllegalArgumentException(message);
//         }
//     }
// 
//     public static <T> void notEmpty(T[] array, String message) {
//         if (array == null || array.length == 0) {
//             throw new IllegalArgumentException(message);
//         }
//     }
// 
//     public static void notEmpty(int[] array, String message) {
//         if (array == null || array.length == 0) {
//             throw new IllegalArgumentException(message);
//         }
//     }
// }


// Path: phial-autofill/src/main/java/com/mindcoders/phial/autofill/AutoFillerBuilder.java
import android.text.TextUtils;
import com.mindcoders.phial.TargetScreen;
import com.mindcoders.phial.internal.util.CollectionUtils;
import com.mindcoders.phial.internal.util.Precondition;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

package com.mindcoders.phial.autofill;





public class AutoFillerBuilder {
    private final TargetScreen targetScreen;
    private List<Integer> targetIds;
    private List<FillOption> options = new ArrayList<>();

    AutoFillerBuilder(TargetScreen targetScreen) {
        this.targetScreen = targetScreen;
    }

    /**
     * Sets view ids to fill.
     *
     * @param ids identifiers of views to be filled. Cannot be empty.
     */
    public AutoFillerBuilder fill(int... ids) {
        Precondition.notEmpty(ids, "ids should not be empty");