diff dwtx/dwtxhelper/Collection.d @ 100:86617aa6b5dd

More helper classes, needed by draw2d
author Frank Benoit <benoit@tionex.de>
date Sun, 03 Aug 2008 00:54:29 +0200
parents
children 1082a0fc2bb8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwtx/dwtxhelper/Collection.d	Sun Aug 03 00:54:29 2008 +0200
@@ -0,0 +1,1078 @@
+module dwtx.dwtxhelper.Collection;
+
+import dwt.dwthelper.utils;
+
+static import tango.util.container.CircularList;
+static import tango.util.container.HashMap;
+static import tango.util.container.SortedMap;
+static import tango.util.container.more.Vector;
+
+interface Iterator{
+    public bool hasNext();
+    public Object next();
+    public void  remove();
+}
+
+interface Collection {
+    public bool     add(Object o);
+    public bool    addAll(Collection c);
+    public void   clear();
+    public bool    contains(Object o);
+    public bool    containsAll(Collection c);
+    public int    opEquals(Object o);
+    public hash_t   toHash();
+    public bool    isEmpty();
+    public Iterator   iterator();
+    public bool    remove(Object o);
+    public bool    removeAll(Collection c);
+    public bool    retainAll(Collection c);
+    public int    size();
+    public Object[]   toArray();
+    public Object[]   toArray(Object[] a);
+}
+
+interface Map {
+    public void clear();
+    public bool containsKey(Object key);
+    public bool containsValue(Object value);
+    public Set  entrySet();
+    public int opEquals(Object o);
+    public Object get(Object key);
+    public hash_t toHash();
+    public bool isEmpty();
+    public Set    keySet();
+    public Object put(Object key, Object value);
+    public void   putAll(Map t);
+    public Object remove(Object key);
+    public int    size();
+    public Collection values();
+
+    // only for D
+    public int opApply (int delegate(ref Object value) dg);
+    public int opApply (int delegate(ref Object key, ref Object value) dg);
+}
+
+interface List : Collection {
+    public void     add(int index, Object element);
+    public bool     add(Object o);
+    public bool     addAll(Collection c);
+    public bool     addAll(int index, Collection c);
+    public void     clear();
+    public bool     contains(Object o);
+    public bool     containsAll(Collection c);
+    public int      opEquals(Object o);
+    public Object   get(int index);
+    public hash_t   toHash();
+    public int      indexOf(Object o);
+    public bool     isEmpty();
+    public Iterator iterator();
+    public int      lastIndexOf(Object o);
+    public ListIterator   listIterator();
+    public ListIterator   listIterator(int index);
+    public Object   remove(int index);
+    public bool     remove(Object o);
+    public bool     removeAll(Collection c);
+    public bool     retainAll(Collection c);
+    public Object   set(int index, Object element);
+    public int      size();
+    public List     subList(int fromIndex, int toIndex);
+    public Object[] toArray();
+    public Object[] toArray(Object[] a);
+}
+
+interface Set : Collection {
+    public bool     add(Object o);
+    public bool     addAll(Collection c);
+    public void     clear();
+    public bool     contains(Object o);
+    public bool     containsAll(Collection c);
+    public int      opEquals(Object o);
+    public hash_t   toHash();
+    public bool     isEmpty();
+    public Iterator iterator();
+    public bool     remove(Object o);
+    public bool     removeAll(Collection c);
+    public bool     retainAll(Collection c);
+    public int      size();
+    public Object[] toArray();
+    public Object[] toArray(Object[] a);
+}
+interface ListIterator {
+    public void   add(Object o);
+    public bool   hasNext();
+    public bool   hasPrevious();
+    public Object next();
+    public int    nextIndex();
+    public Object previous();
+    public int    previousIndex();
+    public void   remove();
+    public void   set(Object o);
+}
+class Collections {
+
+    public static List EMPTY_LIST;
+
+    public static List unmodifiableList( List list ){
+        return null;
+    }
+    public static void     sort(List list){
+    }
+    public static void     sort(List list, Comparator c){
+    }
+    static void     reverse(List list) {
+    }
+}
+
+class HashMap : Map {
+    alias tango.util.container.HashMap.HashMap!(Object,Object) MapType;
+    private MapType map;
+
+    public this(){
+        map = new MapType();
+    }
+    public this(int initialCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public this(int initialCapacity, float loadFactor){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public this(Map m){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public void clear(){
+        map.clear();
+    }
+    public bool containsKey(Object key){
+        Object v;
+        return map.get(key, v );
+    }
+    public bool containsValue(Object value){
+        return map.contains(value);
+    }
+    public Set  entrySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override int opEquals(Object o){
+        if( auto other = cast(HashMap) o ){
+            if( other.size() !is size() ){
+                return false;
+            }
+            foreach( k, v; map ){
+                Object vo = other.get(k);
+                if( v != vo ){
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+    public Object get(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override hash_t toHash(){
+        return super.toHash();
+    }
+    public bool isEmpty(){
+        return map.isEmpty();
+    }
+    public Set    keySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object put(Object key, Object value){
+        Object res = null;
+        if( auto vold = key in map ){
+            res = *vold;
+        }
+        map[ key ] = value;
+        return res;
+    }
+    public void   putAll(Map t){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public Object remove(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public Collection values(){
+        ArrayList res = new ArrayList( size() );
+        foreach( k, v; map ){
+            res.add( v );
+        }
+        return res;
+    }
+
+    public int opApply (int delegate(ref Object value) dg){
+        return map.opApply( dg );
+    }
+    public int opApply (int delegate(ref Object key, ref Object value) dg){
+        return map.opApply( dg );
+    }
+
+}
+
+class TreeMap : Map {
+    alias tango.util.container.SortedMap.SortedMap!(Object,Object) MapType;
+    private MapType map;
+
+    public this(){
+        map = new MapType();
+    }
+    public this(Comparator c){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public this(Map m){
+        implMissing( __FILE__, __LINE__ );
+    }
+//     public this(SortedMap m){
+//         implMissing( __FILE__, __LINE__ );
+//     }
+    public void clear(){
+        map.clear();
+    }
+    public bool containsKey(Object key){
+        Object v;
+        return map.get(key, v );
+    }
+    public bool containsValue(Object value){
+        return map.contains(value);
+    }
+    public Set  entrySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override int opEquals(Object o){
+        if( auto other = cast(HashMap) o ){
+            if( other.size() !is size() ){
+                return false;
+            }
+            foreach( k, v; map ){
+                Object vo = other.get(k);
+                if( v != vo ){
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+    public Object get(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public override hash_t toHash(){
+        return super.toHash();
+    }
+    public bool isEmpty(){
+        return map.isEmpty();
+    }
+    public Set    keySet(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object put(Object key, Object value){
+        Object res = null;
+        implMissing( __FILE__, __LINE__ );
+        return res;
+    }
+    public void   putAll(Map t){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public Object remove(Object key){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public Collection values(){
+        ArrayList res = new ArrayList( size() );
+        foreach( k, v; map ){
+            res.add( v );
+        }
+        return res;
+    }
+
+    public int opApply (int delegate(ref Object value) dg){
+        return map.opApply( dg );
+    }
+    public int opApply (int delegate(ref Object key, ref Object value) dg){
+        return map.opApply( dg );
+    }
+}
+
+class HashSet : Set {
+    public this(){}
+    public this(Collection c){}
+    public this(int initialCapacity){}
+    public this(int initialCapacity, float loadFactor){}
+    public bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    public bool    contains(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public override int    opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public override hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    public int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    public Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    public Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+
+
+}
+
+
+class Vector : List {
+    this(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    this(Collection c){
+        implMissing( __FILE__, __LINE__ );
+    }
+    this(int initialCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    this(int initialCapacity, int capacityIncrement){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   addElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    capacity(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     clone(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    contains(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   copyInto(Object[] anArray){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     elementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+//     Enumeration    elements(){
+//         implMissing( __FILE__, __LINE__ );
+//         return null;
+//     }
+    void   ensureCapacity(int minCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     firstElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     get(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   insertElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     lastElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    lastIndexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeAllElements(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    removeElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeElementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    protected  void     removeRange(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   setElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   setSize(int newSize){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    String     toString(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   trimToSize(){
+        implMissing( __FILE__, __LINE__ );
+    }
+}
+class Stack : Vector {
+    this(){
+    }
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   addElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    capacity(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     clone(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    contains(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   copyInto(Object[] anArray){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     elementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+//     Enumeration    elements(){
+//         implMissing( __FILE__, __LINE__ );
+//         return null;
+//     }
+    void   ensureCapacity(int minCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     firstElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     get(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   insertElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     lastElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    lastIndexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeAllElements(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    removeElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeElementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    protected  void     removeRange(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   setElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   setSize(int newSize){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+
+    // from Stack
+    String     toString(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   trimToSize(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool     empty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     peek(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     pop(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     push(Object item){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    search(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+}
+
+class LinkedList : List {
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   addElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    capacity(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     clone(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    contains(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   copyInto(Object[] anArray){
+        implMissing( __FILE__, __LINE__ );
+    }
+    Object     elementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+//     Enumeration    elements(){
+//         implMissing( __FILE__, __LINE__ );
+//         return null;
+//     }
+    void   ensureCapacity(int minCapacity){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int opEquals(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     firstElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     get(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    hash_t    toHash(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    indexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    void   insertElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    isEmpty(){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     lastElement(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object elem){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    int    lastIndexOf(Object elem, int index){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeAllElements(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    removeElement(Object obj){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   removeElementAt(int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    protected  void     removeRange(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   setElementAt(Object obj, int index){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   setSize(int newSize){
+        implMissing( __FILE__, __LINE__ );
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    String     toString(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    void   trimToSize(){
+        implMissing( __FILE__, __LINE__ );
+    }
+}
+
+class ArrayList : List {
+    private Object[] data;
+
+    this(){
+    }
+    this(int size){
+        data.length = size;
+        data.length = 0;
+    }
+    this(Collection){
+        implMissing( __FILE__, __LINE__ );
+    }
+    void   add(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    add(Object o){
+
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    addAll(int index, Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    void   clear(){
+        implMissing( __FILE__, __LINE__ );
+    }
+    bool    contains(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    containsAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    int opEquals(Object o){
+        if( auto other = cast(ArrayList)o ){
+            if( data.length !is other.data.length ){
+                return false;
+            }
+            for( int i = 0; i < data.length; i++ ){
+                if( data[i] is other.data[i] ){
+                    continue;
+                }
+                if(( data[i] is null ) || ( other.data[i] is null )){
+                    return false;
+                }
+                if( data[i] == other.data[i] ){
+                    continue;
+                }
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+    Object     get(int index){
+        return data[index];
+    }
+    public override hash_t toHash(){
+        return super.toHash();
+    }
+    int    indexOf(Object o){
+        foreach( i, v; data ){
+            if( data[i] is o ){
+                return i;
+            }
+            if(( data[i] is null ) || ( o is null )){
+                continue;
+            }
+            if( data[i] == o ){
+                return i;
+            }
+        }
+        return -1;
+    }
+    bool    isEmpty(){
+        return data.length is 0;
+    }
+    Iterator   iterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    lastIndexOf(Object o){
+        foreach_reverse( i, v; data ){
+            if( data[i] is o ){
+                return i;
+            }
+            if(( data[i] is null ) || ( o is null )){
+                continue;
+            }
+            if( data[i] == o ){
+                return i;
+            }
+        }
+        return -1;
+    }
+    ListIterator   listIterator(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    ListIterator   listIterator(int index){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object     remove(int index){
+        Object res = data[index];
+        data[ index .. $-1] = data[ index+1 .. $ ];
+        data.length = data.length -1;
+        return res;
+    }
+    bool    remove(Object o){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    removeAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    bool    retainAll(Collection c){
+        implMissing( __FILE__, __LINE__ );
+        return false;
+    }
+    Object     set(int index, Object element){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    int    size(){
+        implMissing( __FILE__, __LINE__ );
+        return 0;
+    }
+    List   subList(int fromIndex, int toIndex){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+    Object[]   toArray(Object[] a){
+        implMissing( __FILE__, __LINE__ );
+        return null;
+    }
+}
+
+