// Path: Visitor/src/main/java/com/heaven7/java/visitor/collection/KeyValuePair.java
// public final class KeyValuePair<K, V> {
// 
// 	private K key;
// 	private V value;
// 
// 	private KeyValuePair(K key, V value) {
// 		super();
// 		this.key = key;
// 		this.value = value;
// 	}
// 
// 	public static <K, V> KeyValuePair<K, V> create(K key, V value) {
// 		return new KeyValuePair<K, V>(key, value);
// 	}
// 	
// 	void setKeyValue(K key, V value) {
// 		this.key = key;
// 		this.value = value;
// 	}
// 
// 	/**
// 	 * set the value.
// 	 * 
// 	 * @param value
// 	 *            the target value
// 	 * @return the old value
// 	 */
// 	// avoid access directly for user.
// 	/*
// 	 * V setValue(V value) { // AccessController. return entry.setValue(value);
// 	 * }
// 	 */
// 
// 	/**
// 	 * get the key
// 	 * 
// 	 * @return the key
// 	 */
// 	public K getKey() {
// 		return key;
// 	}
// 
// 	/**
// 	 * get the value
// 	 * 
// 	 * @return the value
// 	 */
// 	public V getValue() {
// 		return value;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return key + " = " + value;
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (!(obj instanceof KeyValuePair)) {
// 			return false;
// 		}
// 		final KeyValuePair<K, V> e2;
// 		try {
// 			e2 = (KeyValuePair<K, V>) obj;
// 		} catch (ClassCastException e) {
// 			return false;
// 		}
// 		final KeyValuePair<K, V> e1 = this;
// 		return (e1.getKey() == null ? e2.getKey() == null : e1.getKey().equals(e2.getKey()))
// 				&& (e1.getValue() == null ? e2.getValue() == null : e1.getValue().equals(e2.getValue()));
// 
// 	}
// 
// }


import com.heaven7.java.visitor.collection.KeyValuePair;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
	public void put(Integer key, E value) {
		mMap.put(key, value);
	}

	@Override
	public void remove(Integer key) {
		mMap.remove(key);
	}

	@Override
	public E get(Integer key) {
		return mMap.get(key);
	}

	@Override
	public boolean containsKey(Integer key) {
		return mMap.indexOfKey(key) >= 0;
	}

	@Override
	public List<KeyValuePair<Integer, E>> getKeyValues() {
		if (mTempPairs == null) {
			mTempPairs = new ArrayList<KeyValuePair<Integer, E>>();
		} else {
			mTempPairs.clear();
		}
		final List<KeyValuePair<Integer, E>> list = this.mTempPairs;
		final SparseArray<E> mMap = this.mMap;
		final int size = mMap.size();
		for (int i = 0; i < size; i++) {
// Path: Visitor/src/main/java/com/heaven7/java/visitor/collection/KeyValuePair.java
// public final class KeyValuePair<K, V> {
// 
// 	private K key;
// 	private V value;
// 
// 	private KeyValuePair(K key, V value) {
// 		super();
// 		this.key = key;
// 		this.value = value;
// 	}
// 
// 	public static <K, V> KeyValuePair<K, V> create(K key, V value) {
// 		return new KeyValuePair<K, V>(key, value);
// 	}
// 	
// 	void setKeyValue(K key, V value) {
// 		this.key = key;
// 		this.value = value;
// 	}
// 
// 	/**
// 	 * set the value.
// 	 * 
// 	 * @param value
// 	 *            the target value
// 	 * @return the old value
// 	 */
// 	// avoid access directly for user.
// 	/*
// 	 * V setValue(V value) { // AccessController. return entry.setValue(value);
// 	 * }
// 	 */
// 
// 	/**
// 	 * get the key
// 	 * 
// 	 * @return the key
// 	 */
// 	public K getKey() {
// 		return key;
// 	}
// 
// 	/**
// 	 * get the value
// 	 * 
// 	 * @return the value
// 	 */
// 	public V getValue() {
// 		return value;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return key + " = " + value;
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (!(obj instanceof KeyValuePair)) {
// 			return false;
// 		}
// 		final KeyValuePair<K, V> e2;
// 		try {
// 			e2 = (KeyValuePair<K, V>) obj;
// 		} catch (ClassCastException e) {
// 			return false;
// 		}
// 		final KeyValuePair<K, V> e1 = this;
// 		return (e1.getKey() == null ? e2.getKey() == null : e1.getKey().equals(e2.getKey()))
// 				&& (e1.getValue() == null ? e2.getValue() == null : e1.getValue().equals(e2.getValue()));
// 
// 	}
// 
// }


// Path: Visitor/src/main/java/com/heaven7/java/visitor/util/SparseArray2Map.java
import com.heaven7.java.visitor.collection.KeyValuePair;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

	public void put(Integer key, E value) {
		mMap.put(key, value);
	}

	@Override
	public void remove(Integer key) {
		mMap.remove(key);
	}

	@Override
	public E get(Integer key) {
		return mMap.get(key);
	}

	@Override
	public boolean containsKey(Integer key) {
		return mMap.indexOfKey(key) >= 0;
	}

	@Override
	public List<KeyValuePair<Integer, E>> getKeyValues() {
		if (mTempPairs == null) {
			mTempPairs = new ArrayList<KeyValuePair<Integer, E>>();
		} else {
			mTempPairs.clear();
		}
		final List<KeyValuePair<Integer, E>> list = this.mTempPairs;
		final SparseArray<E> mMap = this.mMap;
		final int size = mMap.size();
		for (int i = 0; i < size; i++) {
			list.add(KeyValuePair.create(mMap.keyAt(i), mMap.valueAt(i)));