/**@class android.util.ArraySet
 implements java.util.Collection

 implements java.util.Set

@extends java.lang.Object

 ArraySet is a generic set data structure that is designed to be more memory efficient than a
 traditional {@link java.util.HashSet}.  The design is very similar to
 {@link android.util.ArrayMap}, with all of the caveats described there.  This implementation is
 separate from ArrayMap, however, so the Object array contains only one item for each
 entry in the set (instead of a pair for a mapping).

 <p>Note that this implementation is not intended to be appropriate for data structures
 that may contain large numbers of items.  It is generally slower than a traditional
 HashSet, since lookups require a binary search and adds and removes require inserting
 and deleting entries in the array.  For containers holding up to hundreds of items,
 the performance difference is not significant, less than 50%.</p>

 <p>Because this container is intended to better balance memory use, unlike most other
 standard Java containers it will shrink its array as items are removed from it.  Currently
 you have no control over this shrinking -- if you set a capacity and then remove an
 item, it may reduce the capacity to better match the current size.  In the future an
 explicit call to set the capacity should turn off this aggressive shrinking behavior.</p>
*/
var ArraySet = {

/**Make the array map empty.  All storage is released.
*/
clear : function(  ) {},

/**Ensure the array map can hold at least <var>minimumCapacity</var>
 items.
*/
ensureCapacity : function(  ) {},

/**Check whether a value exists in the set.
@param {Object {Object}} key The value to search for.
@return {Boolean} Returns true if the value exists, else false.
*/
contains : function(  ) {},

/**Returns the index of a value in the set.
@param {Object {Object}} key The value to search for.
@return {Number} Returns the index of the value if it exists, else a negative integer.
*/
indexOf : function(  ) {},

/**Return the value at the given index in the array.

 <p>For indices outside of the range <code>0...size()-1</code>, the behavior is undefined for
 apps targeting {@link android.os.Build.VERSION_CODES#P} and earlier, and an
 {@link ArrayIndexOutOfBoundsException} is thrown for apps targeting
 {@link android.os.Build.VERSION_CODES#Q} and later.</p>
@param {Number} index The desired index, must be between 0 and {@link #size()}-1.
@return {Object {java.lang.Object}} Returns the value stored at the given index.
*/
valueAt : function(  ) {},

/**Returns the value at the given index in the array without checking that the index is within
 bounds. This allows testing values at the end of the internal array, outside of the
 [0, mSize) bounds.
@hide 
*/
valueAtUnchecked : function(  ) {},

/**Return true if the array map contains no items.
*/
isEmpty : function(  ) {},

/**Adds the specified object to this set. The set is not modified if it
 already contains the object.
@param {Object {Object}} value the object to add.
@return {Boolean} {@code true} if this set is modified, {@code false} otherwise.
@throws ClassCastException
             when the class of the object is inappropriate for this set.
*/
add : function(  ) {},

/**Special fast path for appending items to the end of the array without validation.
 The array must already be large enough to contain the item.
@hide 
*/
append : function(  ) {},

/**Perform a {@link #add}(Object) of all values in <var>array</var>
@param {Object {android.util.ArraySet}} array The array whose contents are to be retrieved.
*/
addAll : function(  ) {},

/**Removes the specified object from this set.
@param {Object {Object}} object the object to remove.
@return {Boolean} {@code true} if this set was modified, {@code false} otherwise.
*/
remove : function(  ) {},

/**Remove the key/value mapping at the given index.

 <p>For indices outside of the range <code>0...size()-1</code>, the behavior is undefined for
 apps targeting {@link android.os.Build.VERSION_CODES#P} and earlier, and an
 {@link ArrayIndexOutOfBoundsException} is thrown for apps targeting
 {@link android.os.Build.VERSION_CODES#Q} and later.</p>
@param {Number} index The desired index, must be between 0 and {@link #size()}-1.
@return {Object {java.lang.Object}} Returns the value that was stored at this index.
*/
removeAt : function(  ) {},

/**Perform a {@link #remove}(Object) of all values in <var>array</var>
@param {Object {android.util.ArraySet}} array The array whose contents are to be removed.
*/
removeAll : function(  ) {},

/**Removes all values that satisfy the predicate. This implementation avoids using the
 {@link #iterator}().
@param {Object {java.util.function.Predicate}} filter A predicate which returns true for elements to be removed
*/
removeIf : function(  ) {},

/**Return the number of items in this array map.
*/
size : function(  ) {},

/**
*/
toArray : function(  ) {},

/**
*/
toArray : function(  ) {},

/**{@inheritDoc}

 <p>This implementation returns false if the object is not a set, or
 if the sets have different sizes.  Otherwise, for each value in this
 set, it checks to make sure the value also exists in the other set.
 If any value doesn't exist, the method returns false; otherwise, it
 returns true.
*/
equals : function(  ) {},

/**{@inheritDoc}
*/
hashCode : function(  ) {},

/**{@inheritDoc}

 <p>This implementation composes a string by iterating over its values. If
 this set contains itself as a value, the string "(this Set)"
 will appear in its place.
*/
toString : function(  ) {},

/**Return an {@link java.util.Iterator} over all values in the set.

 <p><b>Note:</b> this is a fairly inefficient way to access the array contents, it
 requires generating a number of temporary objects and allocates additional state
 information associated with the container that will remain for the life of the container.</p>
*/
iterator : function(  ) {},

/**Determine if the array set contains all of the values in the given collection.
@param {Object {java.util.Collection}} collection The collection whose contents are to be checked against.
@return {Boolean} Returns true if this array set contains a value for every entry
 in <var>collection</var>, else returns false.
*/
containsAll : function(  ) {},

/**Perform an {@link #add}(Object) of all values in <var>collection</var>
@param {Object {java.util.Collection}} collection The collection whose contents are to be retrieved.
*/
addAll : function(  ) {},

/**Remove all values in the array set that exist in the given collection.
@param {Object {java.util.Collection}} collection The collection whose contents are to be used to remove values.
@return {Boolean} Returns true if any values were removed from the array set, else false.
*/
removeAll : function(  ) {},

/**Remove all values in the array set that do <b>not</b> exist in the given collection.
@param {Object {java.util.Collection}} collection The collection whose contents are to be used to determine which
 values to keep.
@return {Boolean} Returns true if any values were removed from the array set, else false.
*/
retainAll : function(  ) {},


};