diff --git a/jdk-headers/.idea/.name b/jdk-headers/.idea/.name
new file mode 100644
index 00000000000..afd94ca02dc
--- /dev/null
+++ b/jdk-headers/.idea/.name
@@ -0,0 +1 @@
+jdk-headers
\ No newline at end of file
diff --git a/jdk-headers/.idea/ant.xml b/jdk-headers/.idea/ant.xml
new file mode 100644
index 00000000000..2581ca3fe84
--- /dev/null
+++ b/jdk-headers/.idea/ant.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/jdk-headers/.idea/artifacts/jdk_headers_jar.xml b/jdk-headers/.idea/artifacts/jdk_headers_jar.xml
new file mode 100644
index 00000000000..f2e8de23b4d
--- /dev/null
+++ b/jdk-headers/.idea/artifacts/jdk_headers_jar.xml
@@ -0,0 +1,13 @@
+
+
+ $PROJECT_DIR$
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jdk-headers/.idea/compiler.xml b/jdk-headers/.idea/compiler.xml
new file mode 100644
index 00000000000..a1b41c52c72
--- /dev/null
+++ b/jdk-headers/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jdk-headers/.idea/copyright/profiles_settings.xml b/jdk-headers/.idea/copyright/profiles_settings.xml
new file mode 100644
index 00000000000..3572571ad83
--- /dev/null
+++ b/jdk-headers/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/jdk-headers/.idea/encodings.xml b/jdk-headers/.idea/encodings.xml
new file mode 100644
index 00000000000..e206d70d859
--- /dev/null
+++ b/jdk-headers/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/jdk-headers/.idea/misc.xml b/jdk-headers/.idea/misc.xml
new file mode 100644
index 00000000000..97320410eec
--- /dev/null
+++ b/jdk-headers/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/jdk-headers/.idea/modules.xml b/jdk-headers/.idea/modules.xml
new file mode 100644
index 00000000000..4bfabd95716
--- /dev/null
+++ b/jdk-headers/.idea/modules.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/jdk-headers/.idea/scopes/scope_settings.xml b/jdk-headers/.idea/scopes/scope_settings.xml
new file mode 100644
index 00000000000..922003b8433
--- /dev/null
+++ b/jdk-headers/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/jdk-headers/.idea/uiDesigner.xml b/jdk-headers/.idea/uiDesigner.xml
new file mode 100644
index 00000000000..3b000203088
--- /dev/null
+++ b/jdk-headers/.idea/uiDesigner.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jdk-headers/.idea/vcs.xml b/jdk-headers/.idea/vcs.xml
new file mode 100644
index 00000000000..def6a6a1845
--- /dev/null
+++ b/jdk-headers/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/jdk-headers/jdk-headers.iml b/jdk-headers/jdk-headers.iml
new file mode 100644
index 00000000000..d5c07432750
--- /dev/null
+++ b/jdk-headers/jdk-headers.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jdk-headers/src/META-INF/MANIFEST.MF b/jdk-headers/src/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..59499bce4a2
--- /dev/null
+++ b/jdk-headers/src/META-INF/MANIFEST.MF
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
diff --git a/jdk-headers/src/java/lang/Iterable.kt b/jdk-headers/src/java/lang/Iterable.kt
new file mode 100644
index 00000000000..cd19f19e5d3
--- /dev/null
+++ b/jdk-headers/src/java/lang/Iterable.kt
@@ -0,0 +1,5 @@
+package java.lang
+
+public trait Iterable {
+ fun iterator() : java.util.Iterator
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/AbstractCollection.kt b/jdk-headers/src/java/util/AbstractCollection.kt
new file mode 100644
index 00000000000..d95adaeaed9
--- /dev/null
+++ b/jdk-headers/src/java/util/AbstractCollection.kt
@@ -0,0 +1,17 @@
+package java.util
+abstract public open class AbstractCollection protected () : java.util.Collection, java.lang.Object {
+ abstract override public fun iterator() : java.util.Iterator
+ abstract override public fun size() : Int
+ override public fun isEmpty() : Boolean {}
+ override public fun contains(o : Any?) : Boolean {}
+ override public fun toArray() : Array {}
+ override public fun toArray(a : Array) : Array {}
+ override public fun add(e : E) : Boolean {}
+ override public fun remove(o : Any?) : Boolean {}
+ override public fun containsAll(c : java.util.Collection<*>) : Boolean {}
+ override public fun addAll(c : java.util.Collection) : Boolean {}
+ override public fun removeAll(c : java.util.Collection<*>) : Boolean {}
+ override public fun retainAll(c : java.util.Collection<*>) : Boolean {}
+ override public fun clear() : Unit {}
+//override public fun toString() : java.lang.String {}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/AbstractList.kt b/jdk-headers/src/java/util/AbstractList.kt
new file mode 100644
index 00000000000..4c94916b6d2
--- /dev/null
+++ b/jdk-headers/src/java/util/AbstractList.kt
@@ -0,0 +1,20 @@
+package java.util
+abstract public open class AbstractList protected () : java.util.AbstractCollection(), java.util.List {
+ override public fun add(e : E) : Boolean {}
+ abstract override public fun get(index : Int) : E
+ override public fun set(index : Int, element : E) : E {}
+ override public fun add(index : Int, element : E) : Unit {}
+ override public fun remove(index : Int) : E {}
+ override public fun indexOf(o : Any?) : Int {}
+ override public fun lastIndexOf(o : Any?) : Int {}
+ override public fun clear() : Unit {}
+ override public fun addAll(index : Int, c : java.util.Collection) : Boolean {}
+ override public fun iterator() : java.util.Iterator {}
+ override public fun listIterator() : java.util.ListIterator {}
+ override public fun listIterator(index : Int) : java.util.ListIterator {}
+ override public fun subList(fromIndex : Int, toIndex : Int) : java.util.List {}
+// override public fun equals(o : Any?) : Boolean
+// override public fun hashCode() : Int
+ open protected fun removeRange(fromIndex : Int, toIndex : Int) : Unit {}
+ protected var modCount : Int = 0
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/AbstractMap.kt b/jdk-headers/src/java/util/AbstractMap.kt
new file mode 100644
index 00000000000..98e17b74b72
--- /dev/null
+++ b/jdk-headers/src/java/util/AbstractMap.kt
@@ -0,0 +1,21 @@
+package java.util
+
+import java.util.Map.Entry
+
+abstract public open class AbstractMap protected () : java.util.Map, java.lang.Object {
+ override public fun size() : Int {}
+ override public fun isEmpty() : Boolean {}
+ override public fun containsValue(value : Any?) : Boolean {}
+ override public fun containsKey(key : Any?) : Boolean {}
+ override public fun get(key : Any?) : V? {}
+ override public fun put(key : K, value : V) : V? {}
+ override public fun remove(key : Any?) : V? {}
+ override public fun putAll(m : java.util.Map) : Unit {}
+ override public fun clear() : Unit {}
+ override public fun keySet() : java.util.Set {}
+ override public fun values() : java.util.Collection {}
+ abstract override public fun entrySet() : java.util.Set>
+ //override public fun equals(o : Any?) : Boolean
+ //override public fun hashCode() : Int
+ //override public fun toString() : java.lang.String?
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/AbstractSequentialList.kt b/jdk-headers/src/java/util/AbstractSequentialList.kt
new file mode 100644
index 00000000000..2318cc39c2e
--- /dev/null
+++ b/jdk-headers/src/java/util/AbstractSequentialList.kt
@@ -0,0 +1,10 @@
+package java.util
+abstract public open class AbstractSequentialList protected () : java.util.AbstractList(), java.lang.Object {
+ override public fun get(index : Int) : E {}
+ override public fun set(index : Int, element : E) : E {}
+ override public fun add(index : Int, element : E) : Unit {}
+ override public fun remove(index : Int) : E {}
+ override public fun addAll(index : Int, c : java.util.Collection) : Boolean {}
+ override public fun iterator() : java.util.Iterator {}
+ abstract override public fun listIterator(index : Int) : java.util.ListIterator {}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/AbstractSet.kt b/jdk-headers/src/java/util/AbstractSet.kt
new file mode 100644
index 00000000000..bf6e6b83259
--- /dev/null
+++ b/jdk-headers/src/java/util/AbstractSet.kt
@@ -0,0 +1,6 @@
+package java.util
+abstract public open class AbstractSet protected () : java.util.AbstractCollection(), java.util.Set, java.lang.Object {
+// override public fun equals(o : Any?) : Boolean
+// override public fun hashCode() : Int
+ override public fun removeAll(c : java.util.Collection<*>) : Boolean {}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/ArrayList.kt b/jdk-headers/src/java/util/ArrayList.kt
new file mode 100644
index 00000000000..612896ed369
--- /dev/null
+++ b/jdk-headers/src/java/util/ArrayList.kt
@@ -0,0 +1,38 @@
+package java.util
+public open class ArrayList(c : java.util.Collection) : java.util.AbstractList(),
+ java.util.List,
+ java.util.RandomAccess,
+ java.lang.Cloneable,
+ java.io.Serializable,
+ java.lang.Object {
+ public this() {}
+ public this(initialCapacity : Int) {}
+ open public fun trimToSize() : Unit {}
+ open public fun ensureCapacity(minCapacity : Int) : Unit {}
+ override public fun size() : Int {}
+ override public fun isEmpty() : Boolean {}
+ override public fun contains(o : Any?) : Boolean {}
+ override public fun indexOf(o : Any?) : Int {}
+ override public fun lastIndexOf(o : Any?) : Int {}
+ override public fun clone() : java.lang.Object {}
+ override public fun toArray() : Array {}
+ override public fun toArray(a : Array) : Array {}
+ override public fun get(index : Int) : E {}
+ override public fun set(index : Int, element : E) : E {}
+ override public fun add(e : E) : Boolean {}
+ override public fun add(index : Int, element : E) : Unit {}
+ override public fun remove(index : Int) : E {}
+ override public fun remove(o : Any?) : Boolean {}
+ override public fun clear() : Unit {}
+ override public fun addAll(c : java.util.Collection) : Boolean {}
+ override public fun addAll(index : Int, c : java.util.Collection) : Boolean {}
+ override protected fun removeRange(fromIndex : Int, toIndex : Int) : Unit {}
+// class object {
+// open public fun init() : ArrayList {
+// return __
+// }
+// open public fun init(c : java.util.Collection?) : ArrayList {
+// return __
+// }
+// }
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Collection.kt b/jdk-headers/src/java/util/Collection.kt
new file mode 100644
index 00000000000..c852e48f1fd
--- /dev/null
+++ b/jdk-headers/src/java/util/Collection.kt
@@ -0,0 +1,20 @@
+package java.util
+public trait Collection : java.lang.Iterable {
+ open fun size() : Int
+ open fun isEmpty() : Boolean
+ open fun contains(o : Any?) : Boolean
+ override fun iterator() : java.util.Iterator
+ open fun toArray() : Array
+ // a : Array to emulate Java's array covariance
+ open fun toArray(a : Array) : Array
+ open fun add(e : E) : Boolean
+ open fun remove(o : Any?) : Boolean
+ open fun containsAll(c : java.util.Collection<*>) : Boolean
+ open fun addAll(c : java.util.Collection) : Boolean
+ open fun removeAll(c : java.util.Collection<*>) : Boolean
+ open fun retainAll(c : java.util.Collection<*>) : Boolean
+ open fun clear() : Unit
+
+// override fun equals(o : Any?) : Boolean
+// override fun hashCode() : Int
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Deque.kt b/jdk-headers/src/java/util/Deque.kt
new file mode 100644
index 00000000000..5282d85c672
--- /dev/null
+++ b/jdk-headers/src/java/util/Deque.kt
@@ -0,0 +1,30 @@
+package java.util
+public trait Deque : java.util.Queue {
+ open fun addFirst(e : E) : Unit
+ open fun addLast(e : E) : Unit
+ open fun offerFirst(e : E) : Boolean
+ open fun offerLast(e : E) : Boolean
+ open fun removeFirst() : E
+ open fun removeLast() : E
+ open fun pollFirst() : E?
+ open fun pollLast() : E?
+ open fun getFirst() : E
+ open fun getLast() : E
+ open fun peekFirst() : E?
+ open fun peekLast() : E?
+ open fun removeFirstOccurrence(o : Any?) : Boolean
+ open fun removeLastOccurrence(o : Any?) : Boolean
+ override fun add(e : E) : Boolean
+ override fun offer(e : E) : Boolean
+ override fun remove() : E
+ override fun poll() : E?
+ override fun element() : E
+ override fun peek() : E?
+ open fun push(e : E) : Unit
+ open fun pop() : E
+ override fun remove(o : Any?) : Boolean
+ override fun contains(o : Any?) : Boolean
+ override public fun size() : Int
+ override fun iterator() : java.util.Iterator
+ open fun descendingIterator() : java.util.Iterator
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Enumeration.kt b/jdk-headers/src/java/util/Enumeration.kt
new file mode 100644
index 00000000000..127a4b69ca9
--- /dev/null
+++ b/jdk-headers/src/java/util/Enumeration.kt
@@ -0,0 +1,5 @@
+package java.util
+public trait Enumeration {
+ open fun hasMoreElements() : Boolean
+ open fun nextElement() : E
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/HashMap.kt b/jdk-headers/src/java/util/HashMap.kt
new file mode 100644
index 00000000000..97ee82d5368
--- /dev/null
+++ b/jdk-headers/src/java/util/HashMap.kt
@@ -0,0 +1,24 @@
+package java.util
+import java.io.*
+public open class HashMap(m : java.util.Map) : java.util.AbstractMap(),
+ java.util.Map,
+ java.lang.Cloneable,
+ java.io.Serializable,
+ java.lang.Object {
+ public this() {}
+ public this(initialCapacity : Int) {}
+ public this(initialCapacity : Int, loadFactor : Float) {}
+ override public fun size() : Int {}
+ override public fun isEmpty() : Boolean {}
+ override public fun get(key : Any?) : V? {}
+ override public fun containsKey(key : Any?) : Boolean {}
+ override public fun put(key : K, value : V) : V? {}
+ override public fun putAll(m : java.util.Map) : Unit {}
+ override public fun remove(key : Any?) : V? {}
+ override public fun clear() : Unit {}
+ override public fun containsValue(value : Any?) : Boolean {}
+ override public fun clone() : Any? {}
+ override public fun keySet() : java.util.Set {}
+ override public fun values() : java.util.Collection {}
+ override public fun entrySet() : java.util.Set> {}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/HashSet.kt b/jdk-headers/src/java/util/HashSet.kt
new file mode 100644
index 00000000000..0017654f512
--- /dev/null
+++ b/jdk-headers/src/java/util/HashSet.kt
@@ -0,0 +1,40 @@
+package java.util
+public open class HashSet(c : java.util.Collection) : java.util.AbstractSet(),
+ java.util.Set,
+ java.lang.Cloneable,
+ java.io.Serializable,
+ java.lang.Object {
+ public this() {}
+ public this(initialCapacity : Int) {}
+ public this(initialCapacity : Int, loadFactor : Float) {}
+ override public fun iterator() : java.util.Iterator {}
+ override public fun size() : Int {}
+ override public fun isEmpty() : Boolean {}
+ override public fun contains(o : Any?) : Boolean {}
+ override public fun add(e : E) : Boolean {}
+ override public fun remove(o : Any?) : Boolean {}
+ override public fun clear() : Unit {}
+ override public fun clone() : Any? {}
+//class object {
+//open public fun init() : HashSet {
+//val __ = HashSet(0, null, null)
+//return __
+//}
+//open public fun init(c : java.util.Collection?) : HashSet {
+//val __ = HashSet(0, null, null)
+//return __
+//}
+//open public fun init(initialCapacity : Int, loadFactor : Float) : HashSet {
+//val __ = HashSet(0, null, null)
+//return __
+//}
+//open public fun init(initialCapacity : Int) : HashSet {
+//val __ = HashSet(0, null, null)
+//return __
+//}
+//open fun init(initialCapacity : Int, loadFactor : Float, dummy : Boolean) : HashSet {
+//val __ = HashSet(0, null, null)
+//return __
+//}
+//}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Iterator.kt b/jdk-headers/src/java/util/Iterator.kt
new file mode 100644
index 00000000000..935228ebd73
--- /dev/null
+++ b/jdk-headers/src/java/util/Iterator.kt
@@ -0,0 +1,7 @@
+package java.util
+
+public trait Iterator {
+ fun hasNext() : Boolean
+ fun next() : E
+ fun remove() : Unit
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/LinkedHashMap.kt b/jdk-headers/src/java/util/LinkedHashMap.kt
new file mode 100644
index 00000000000..e81d937d453
--- /dev/null
+++ b/jdk-headers/src/java/util/LinkedHashMap.kt
@@ -0,0 +1,34 @@
+package java.util
+import java.io.*
+public open class LinkedHashMap(m : java.util.Map) : java.util.HashMap(), java.util.Map, java.lang.Object {
+ public this(initialCapacity : Int, loadFactor : Float) {}
+ public this(initialCapacity : Int) {}
+ public this() {}
+
+ override public fun containsValue(value : Any?) : Boolean {}
+ override public fun get(key : Any?) : V? {}
+ override public fun clear() : Unit {}
+ open protected fun removeEldestEntry(eldest : java.util.Map.Entry) : Boolean {}
+ //class object {
+ //open public fun init(initialCapacity : Int, loadFactor : Float) : LinkedHashMap {
+ //val __ = LinkedHashMap(0, null, false)
+ //return __
+ //}
+ //open public fun init(initialCapacity : Int) : LinkedHashMap {
+ //val __ = LinkedHashMap(0, null, false)
+ //return __
+ //}
+ //open public fun init() : LinkedHashMap {
+ //val __ = LinkedHashMap(0, null, false)
+ //return __
+ //}
+ //open public fun init(m : java.util.Map?) : LinkedHashMap {
+ //val __ = LinkedHashMap(0, null, false)
+ //return __
+ //}
+ //open public fun init(initialCapacity : Int, loadFactor : Float, accessOrder : Boolean) : LinkedHashMap {
+ //val __ = LinkedHashMap(0, null, false)
+ //return __
+ //}
+ //}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/LinkedHashSet.kt b/jdk-headers/src/java/util/LinkedHashSet.kt
new file mode 100644
index 00000000000..4f85a4bdb0f
--- /dev/null
+++ b/jdk-headers/src/java/util/LinkedHashSet.kt
@@ -0,0 +1,10 @@
+package java.util
+public open class LinkedHashSet(c : java.util.Collection) : java.util.HashSet(c),
+ java.util.Set,
+ java.lang.Cloneable,
+ java.io.Serializable,
+ java.lang.Object {
+ public this(initialCapacity : Int, loadFactor : Float) {}
+ public this(initialCapacity : Int) {}
+ public this() {}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/LinkedList.kt b/jdk-headers/src/java/util/LinkedList.kt
new file mode 100644
index 00000000000..a4a0c4f83da
--- /dev/null
+++ b/jdk-headers/src/java/util/LinkedList.kt
@@ -0,0 +1,54 @@
+package java.util
+public open class LinkedList(c : java.util.Collection) : java.util.AbstractSequentialList(),
+ java.util.List,
+ java.util.Deque,
+ java.lang.Cloneable,
+ java.io.Serializable,
+ java.lang.Object {
+ public this() {}
+
+ override public fun getFirst() : E {}
+ override public fun getLast() : E {}
+ override public fun removeFirst() : E {}
+ override public fun removeLast() : E {}
+ override public fun addFirst(e : E) : Unit {}
+ override public fun addLast(e : E) : Unit {}
+ override public fun contains(o : Any?) : Boolean {}
+ override public fun size() : Int {}
+ override public fun add(e : E) : Boolean {}
+ override public fun remove(o : Any?) : Boolean {}
+ override public fun addAll(c : java.util.Collection) : Boolean {}
+ override public fun addAll(index : Int, c : java.util.Collection) : Boolean {}
+ override public fun clear() : Unit {}
+ override public fun get(index : Int) : E {}
+ override public fun set(index : Int, element : E) : E {}
+ override public fun add(index : Int, element : E) : Unit {}
+ override public fun remove(index : Int) : E {}
+ override public fun indexOf(o : Any?) : Int {}
+ override public fun lastIndexOf(o : Any?) : Int {}
+ override public fun peek() : E? {}
+ override public fun element() : E {}
+ override public fun poll() : E? {}
+ override public fun remove() : E {}
+ override public fun offer(e : E) : Boolean {}
+ override public fun offerFirst(e : E) : Boolean {}
+ override public fun offerLast(e : E) : Boolean {}
+ override public fun peekFirst() : E? {}
+ override public fun peekLast() : E? {}
+ override public fun pollFirst() : E? {}
+ override public fun pollLast() : E? {}
+ override public fun push(e : E) : Unit {}
+ override public fun pop() : E {}
+ override public fun removeFirstOccurrence(o : Any?) : Boolean {}
+ override public fun removeLastOccurrence(o : Any?) : Boolean {}
+ override public fun listIterator(index : Int) : java.util.ListIterator {}
+ override public fun descendingIterator() : java.util.Iterator {}
+ override public fun clone() : Any? {}
+ override public fun toArray() : Array {}
+ override public fun toArray(a : Array) : Array {}
+//class object {
+//open public fun init(c : java.util.Collection?) : LinkedList {
+//return __
+//}
+//}
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/List.kt b/jdk-headers/src/java/util/List.kt
new file mode 100644
index 00000000000..741ea472522
--- /dev/null
+++ b/jdk-headers/src/java/util/List.kt
@@ -0,0 +1,29 @@
+package java.util
+public trait List : java.util.Collection {
+ override fun size() : Int
+ override fun isEmpty() : Boolean
+ override fun contains(o : Any?) : Boolean
+ override fun iterator() : java.util.Iterator
+ override fun toArray() : Array
+ // Simulate Java's array covariance
+ override fun toArray(a : Array) : Array
+ override fun add(e : E) : Boolean
+ override fun remove(o : Any?) : Boolean
+ override fun containsAll(c : java.util.Collection<*>) : Boolean
+ override fun addAll(c : java.util.Collection) : Boolean
+ open fun addAll(index : Int, c : java.util.Collection) : Boolean
+ override fun removeAll(c : java.util.Collection<*>) : Boolean
+ override fun retainAll(c : java.util.Collection<*>) : Boolean
+ override fun clear() : Unit
+// override fun equals(o : Any?) : Boolean
+// override fun hashCode() : Int
+ open fun get(index : Int) : E
+ open fun set(index : Int, element : E) : E
+ open fun add(index : Int, element : E) : Unit
+ open fun remove(index : Int) : E
+ open fun indexOf(o : Any?) : Int
+ open fun lastIndexOf(o : Any?) : Int
+ open fun listIterator() : java.util.ListIterator
+ open fun listIterator(index : Int) : java.util.ListIterator
+ open fun subList(fromIndex : Int, toIndex : Int) : java.util.List
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Map.kt b/jdk-headers/src/java/util/Map.kt
new file mode 100644
index 00000000000..fc28c9fe226
--- /dev/null
+++ b/jdk-headers/src/java/util/Map.kt
@@ -0,0 +1,28 @@
+package java.util
+
+public trait Map {
+ open fun size() : Int
+ open fun isEmpty() : Boolean
+ open fun containsKey(key : Any?) : Boolean
+ open fun containsValue(value : Any?) : Boolean
+ open fun get(key : Any?) : V?
+ open fun put(key : K, value : V) : V?
+ open fun remove(key : Any?) : V?
+ open fun putAll(m : java.util.Map) : Unit
+ open fun clear() : Unit
+ open fun keySet() : java.util.Set
+ open fun values() : java.util.Collection
+ open fun entrySet() : java.util.Set>
+// open fun equals(o : Any?) : Boolean
+// open fun hashCode() : Int
+
+ class object {
+ trait Entry {
+ open fun getKey() : K
+ open fun getValue() : V
+ open fun setValue(value : V) : V
+// open fun equals(o : Any?) : Boolean
+// open fun hashCode() : Int
+ }
+ }
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Queue.kt b/jdk-headers/src/java/util/Queue.kt
new file mode 100644
index 00000000000..0a4eb0ecbfb
--- /dev/null
+++ b/jdk-headers/src/java/util/Queue.kt
@@ -0,0 +1,9 @@
+package java.util
+public trait Queue : java.util.Collection {
+ override fun add(e : E) : Boolean
+ open fun offer(e : E) : Boolean
+ open fun remove() : E
+ open fun poll() : E?
+ open fun element() : E
+ open fun peek() : E?
+}
\ No newline at end of file
diff --git a/jdk-headers/src/java/util/Set.kt b/jdk-headers/src/java/util/Set.kt
new file mode 100644
index 00000000000..7f07f5da03f
--- /dev/null
+++ b/jdk-headers/src/java/util/Set.kt
@@ -0,0 +1,20 @@
+package java.util
+public trait Set : java.util.Collection {
+ override fun size() : Int
+ override fun isEmpty() : Boolean
+ override fun contains(o : Any?) : Boolean
+ override fun iterator() : java.util.Iterator
+ override fun toArray() : Array
+
+ // Simulate Java's array covariance
+ override fun toArray(a : Array) : Array
+ override fun add(e : E) : Boolean
+ override fun remove(o : Any?) : Boolean
+ override fun containsAll(c : java.util.Collection<*>) : Boolean
+ override fun addAll(c : java.util.Collection) : Boolean
+ override fun retainAll(c : java.util.Collection<*>) : Boolean
+ override fun removeAll(c : java.util.Collection<*>) : Boolean
+ override fun clear() : Unit
+// override fun equals(o : Any?) : Boolean
+// override fun hashCode() : Int
+}
\ No newline at end of file
diff --git a/jdk-headers/test/test.iml b/jdk-headers/test/test.iml
new file mode 100644
index 00000000000..b13953ece7d
--- /dev/null
+++ b/jdk-headers/test/test.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+