// Aliasing types for Android API methods.

import org.checkerframework.common.aliasing.qual.*;

package android.content;

class Intent implements Parcelable, Cloneable {
  @Unique Intent();
  // Copy constructor.
  @Unique Intent(@NonLeaked Intent arg0);
  @Unique Intent(String arg0);
  @Unique Intent(String arg0, Uri arg1);
  @Unique Intent(Context arg0, Class<?> arg1);
  @Unique Intent(String arg0, Uri arg1, Context arg2, Class<?> arg3);

  Intent addCategory(@LeakedToResult Intent this, String category);
  Intent addFlags(@LeakedToResult Intent this, int flags);
  Intent setType(@LeakedToResult Intent this, String type);
  Intent setData(@LeakedToResult Intent this, Uri data);
  Intent setComponent(@LeakedToResult Intent this, ComponentName cName);
  Intent setClass(@LeakedToResult Intent this, Context arg0, Class<?> arg1);
  Intent setAction(@LeakedToResult Intent this, String action);
  Intent putExtra(@LeakedToResult Intent this, String arg0, boolean arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, byte arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, char arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, short arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, int arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, long arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, float arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, double arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, String arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, CharSequence arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, Parcelable arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, Parcelable[] arg1);
  Intent putParcelableArrayListExtra(@LeakedToResult Intent this, String arg0, ArrayList<? extends Parcelable> arg1);
  Intent putIntegerArrayListExtra(@LeakedToResult Intent this, String arg0, ArrayList< Integer> arg1);
  Intent putStringArrayListExtra(@LeakedToResult Intent this, String arg0, ArrayList< String> arg1);
  Intent putCharSequenceArrayListExtra(@LeakedToResult Intent this, String arg0, ArrayList< CharSequence> arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, Serializable arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, boolean [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, byte [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, short [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, char [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, int [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, long [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, float [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, double [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, String [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, CharSequence [] arg1);
  Intent putExtra(@LeakedToResult Intent this, String arg0, Bundle arg1);
}


package android.app;


class BroadcastReceiver{
    void startActivity(@NonLeaked Intent arg0);
    void startActivities(@NonLeaked Intent[] arg0);
    void sendBroadcast(@NonLeaked Intent arg0);
    void sendBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1, BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6);
    void sendStickyBroadcast(@NonLeaked Intent arg0);
    void sendStickyOrderedBroadcast(@NonLeaked Intent arg0, BroadcastReceiver arg1, Handler arg2, int arg3, String arg4, Bundle arg5);
    void removeStickyBroadcast(@NonLeaked Intent arg0);
    ComponentName startService(@NonLeaked Intent arg0);
    boolean bindService(@NonLeaked Intent arg0, ServiceConnection arg1, int arg2);
}


class Context {
    void startActivity(@NonLeaked Intent arg0);
    void startActivities(@NonLeaked Intent[] arg0);
    void sendBroadcast(@NonLeaked Intent arg0);
    void sendBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1, BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6);
    void sendStickyBroadcast(@NonLeaked Intent arg0);
    void sendStickyOrderedBroadcast(@NonLeaked Intent arg0, BroadcastReceiver arg1, Handler arg2, int arg3, String arg4, Bundle arg5);
    void removeStickyBroadcast(@NonLeaked Intent arg0);
    ComponentName startService(@NonLeaked Intent arg0);
    boolean bindService(@NonLeaked Intent arg0, ServiceConnection arg1, int arg2);
}

class ContextWrapper extends Context {
    void startActivity(@NonLeaked Intent arg0);
    void startActivities(@NonLeaked Intent[] arg0);
    void sendBroadcast(@NonLeaked Intent arg0);
    void sendBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1, BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6);
    void sendStickyBroadcast(@NonLeaked Intent arg0);
    void sendStickyOrderedBroadcast(@NonLeaked Intent arg0, BroadcastReceiver arg1, Handler arg2, int arg3, String arg4, Bundle arg5);
    void removeStickyBroadcast(@NonLeaked Intent arg0);
    ComponentName startService(@NonLeaked Intent arg0);
    boolean bindService(@NonLeaked Intent arg0, ServiceConnection arg1, int arg2);
}


class Service {
    void startActivity(@NonLeaked Intent arg0);
    void startActivities(@NonLeaked Intent[] arg0);
    void sendBroadcast(@NonLeaked Intent arg0);
    void sendBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1, BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6);
    void sendStickyBroadcast(@NonLeaked Intent arg0);
    void sendStickyOrderedBroadcast(@NonLeaked Intent arg0, BroadcastReceiver arg1, Handler arg2, int arg3, String arg4, Bundle arg5);
    void removeStickyBroadcast(@NonLeaked Intent arg0);
    ComponentName startService(@NonLeaked Intent arg0);
    boolean bindService(@NonLeaked Intent arg0, ServiceConnection arg1, int arg2);
}

class Activity {
    void startActivityForResult(@NonLeaked Intent arg0, int arg1);
    boolean startActivityIfNeeded(@NonLeaked Intent arg0, int arg1);
    boolean startNextMatchingActivity(@NonLeaked Intent arg0);
    void startActivityFromChild(Activity arg0, @NonLeaked Intent arg1, int arg2);
    void startActivityFromFragment(Fragment arg0, @NonLeaked Intent arg1, int arg2);
    void startActivity(@NonLeaked Intent arg0);
    void startActivities(@NonLeaked Intent[] arg0);
    void sendBroadcast(@NonLeaked Intent arg0);
    void sendBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1);
    void sendOrderedBroadcast(@NonLeaked Intent arg0, String arg1, BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6);
    void sendStickyBroadcast(@NonLeaked Intent arg0);
    void sendStickyOrderedBroadcast(@NonLeaked Intent arg0, BroadcastReceiver arg1, Handler arg2, int arg3, String arg4, Bundle arg5);
    void removeStickyBroadcast(@NonLeaked Intent arg0);
    ComponentName startService(@NonLeaked Intent arg0);
    boolean bindService(@NonLeaked Intent arg0, ServiceConnection arg1, int arg2);
}

package android.os;

class Bundle {
    @Unique Bundle();
    void putAll(@NonLeaked Bundle this, Bundle arg0);
    void putBoolean(@NonLeaked Bundle this, String arg0, boolean arg1);
    void putByte(@NonLeaked Bundle this, String arg0, byte arg1);
    void putChar(@NonLeaked Bundle this, String arg0, char arg1);
    void putShort(@NonLeaked Bundle this, String arg0, short arg1);
    void putInt(@NonLeaked Bundle this, String arg0, int arg1);
    void putLong(@NonLeaked Bundle this, String arg0, long arg1);
    void putFloat(@NonLeaked Bundle this, String arg0, float arg1);
    void putDouble(@NonLeaked Bundle this, String arg0, double arg1);
    void putString(@NonLeaked Bundle this, String arg0, String arg1);
    void putCharSequence(@NonLeaked Bundle this, String arg0, CharSequence arg1);
    void putParcelable(@NonLeaked Bundle this, String arg0, Parcelable arg1);
    void putParcelableArray(@NonLeaked Bundle this, String arg0, Parcelable[] arg1);
    void putParcelableArrayList(@NonLeaked Bundle this, String arg0, ArrayList<? extends Parcelable> arg1);
    void putSparseParcelableArray(@NonLeaked Bundle this, String arg0, SparseArray<? extends Parcelable> arg1);
    void putIntegerArrayList(@NonLeaked Bundle this, String arg0, ArrayList<Integer> arg1);
    void putStringArrayList(@NonLeaked Bundle this, String arg0, ArrayList<String> arg1);
    void putCharSequenceArrayList(@NonLeaked Bundle this, String arg0, ArrayList<CharSequence> arg1);
    void putSerializable(@NonLeaked Bundle this, String arg0, Serializable arg1);
    void putBooleanArray(@NonLeaked Bundle this, String arg0, boolean[] arg1);
    void putByteArray(@NonLeaked Bundle this, String arg0, byte[] arg1);
    void putShortArray(@NonLeaked Bundle this, String arg0, short[] arg1);
    void putCharArray(@NonLeaked Bundle this, String arg0, char[] arg1);
    void putIntArray(@NonLeaked Bundle this, String arg0, int[] arg1);
    void putLongArray(@NonLeaked Bundle this, String arg0, long[] arg1);
    void putFloatArray(@NonLeaked Bundle this, String arg0, float[] arg1);
    void putDoubleArray(@NonLeaked Bundle this, String arg0, double[] arg1);
    void putStringArray(@NonLeaked Bundle this, String arg0, String[] arg1);
    void putCharSequenceArray(@NonLeaked Bundle this, String arg0, CharSequence[] arg1);
    void putBundle(@NonLeaked Bundle this, String arg0, Bundle arg1);
    void putBinder(@NonLeaked Bundle this, String arg0, IBinder arg1);
    /**
    boolean getBoolean(String arg0);
    boolean getBoolean(String arg0, boolean arg1);
    byte getByte(String arg0);
    Byte getByte(String arg0, byte arg1);
    char getChar(String arg0);
    char getChar(String arg0, char arg1);
    short getShort(String arg0);
    short getShort(String arg0, short arg1);
    int getInt(String arg0);
    int getInt(String arg0, int arg1);
    long getLong(String arg0);
    long getLong(String arg0, long arg1);
    float getFloat(String arg0);
    float getFloat(String arg0, float arg1);
    double getDouble(String arg0);
    double getDouble(String arg0, double arg1);
    String getString(String arg0);
    String getString(String arg0, String arg1);
    CharSequence getCharSequence(String arg0);
    CharSequence getCharSequence(String arg0, CharSequence arg1);
    Bundle getBundle(String arg0);
    <T> T getParcelable(String arg0);
    Parcelable[] getParcelableArray(String arg0);
    <T> ArrayList<T> getParcelableArrayList(String arg0);
    <T> SparseArray<T> getSparseParcelableArray(String arg0);
    Serializable getSerializable(String arg0);
    ArrayList<Integer> getIntegerArrayList(String arg0);
    ArrayList<String> getStringArrayList(String arg0);
    ArrayList<CharSequence> getCharSequenceArrayList(String arg0);
    boolean[] getBooleanArray(String arg0);
    byte[] getByteArray(String arg0);
    short[] getShortArray(String arg0);
    char[] getCharArray(String arg0);
    int[] getIntArray(String arg0);
    long[] getLongArray(String arg0);
    float[] getFloatArray(String arg0);
    double[] getDoubleArray(String arg0);
    String[] getStringArray(String arg0);
    CharSequence[] getCharSequenceArray(String arg0);
    IBinder getBinder(String arg0);
    **/
}
