1. Constuctor: public Header(Map> map) =========================================================== This Constructor destroys the private props-ArrayList. Example: ======== map = { 'a' => { 'b' }, 'c' => { 'd', 'e' } } produces the following props-Array: props = {c, d, e, a, b} k v k v ? <== k=key v=value And a call to Header.getFieldMap() returns the following map: Header.getFieldMap() = { 'c' => { 'd' }, 'e' => { 'a' } } Solution: ========= In Line 65 the key is added to the props-Array. I moved this line to Line 70 (the inner loop). Now every props element with an even index is a key and every element with an odd index is a value. 2. Mixed-case Property-Names get replaced by Method: public void add(String key, String value) ============================================================================== In Line 105 this method checks if key is already in the keyTable. If not a new LinkedList is created. The new created List is stored in the keyTable with the key converted to lower-case. Example: add("a", "c"); add("A", "b"); The first call adds a new Entry to the keyTable. In the second call the key "A" does not exist in the keyTable. Therefore a new value is created and stored under the lower-case version of "A". This replaces the previously stored entry. Solution: ========= In Line 105 the check must be done with the key converted to lower-case. Because we need the lower-case-version of key twice, I introduced the new local variable "lKey" which represents the key in lower-case. 3. getFieldMap returns Map with lower-case property-names ============================================================================== This method returns a Map based on the private keyTable-member. This member is used by the method get(String key) which returns the last added value for key. The key may be passed in mixed-case to the get-method. Therefore it's necessary that the keys in keyTable are stored in lower-case. Solution: ========= Because all keys are stored in lower-case we can not use the keyTable to create the return value for getFieldMap. Therefore I use the props-array in order to create the return-value.