Implement readStringList and writeStringList
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowParcel.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowParcel.java
index f8eac10..57d35d2 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowParcel.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowParcel.java
@@ -181,16 +181,47 @@
     }
 
     @Implementation
-    public void readStringArray(String[] val) {
+    public void readStringArray(String[] dest) {
         int n = readInt();
-        if (val.length != n) throw new RuntimeException("bad array lengths");
-        for (int i = 0; i < val.length; i++) {
-            val[i] = readString();
+        if (dest.length != n) throw new RuntimeException("bad array lengths");
+        for (int i = 0; i < dest.length; i++) {
+            dest[i] = readString();
         }
     }
 
     @Implementation
-    public final ArrayList<String> createStringArrayList() {
+    public void writeStringList(List<String> strings) {
+        if (strings == null) {
+            writeInt(-1);
+            return;
+        }
+        int count = strings.size();
+        int i=0;
+        writeInt(count);
+        while (i < count) {
+            writeString(strings.get(i));
+            i++;
+        }
+    }
+
+    @Implementation
+    public void readStringList(List<String> list) {
+        int listSizeBeforeChange = list.size();
+        int addCount = readInt();
+        int i = 0;
+        for (; i < listSizeBeforeChange && i < addCount; i++) {
+            list.set(i, readString());
+        }
+        for (; i<addCount; i++) {
+            list.add(readString());
+        }
+        for (; i<listSizeBeforeChange; i++) {
+            list.remove(addCount);
+        }
+    }
+
+    @Implementation
+    public ArrayList<String> createStringArrayList() {
         int n = readInt();
         if (n < 0) {
             return null;
@@ -225,7 +256,7 @@
     }
 
     @Implementation
-    public final void writeTypedList(List val) {
+    public void writeTypedList(List val) {
         if (val == null) {
             writeInt(-1);
             return;
diff --git a/src/test/java/com/xtremelabs/robolectric/shadows/ParcelTest.java b/src/test/java/com/xtremelabs/robolectric/shadows/ParcelTest.java
index 08e9969..f05db61 100644
--- a/src/test/java/com/xtremelabs/robolectric/shadows/ParcelTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/shadows/ParcelTest.java
@@ -297,4 +297,17 @@
         assertEquals(1, rehydrated.size());
         assertEquals(23, rehydrated.get(0).contents);
     }
+
+    @Test
+    public void testReadAndWriteStringList() throws Exception {
+        ArrayList<String> original = new ArrayList<String>();
+        ArrayList<String> rehydrated = new ArrayList<String>();
+        original.add("str1");
+        original.add("str2");
+        parcel.writeStringList(original);
+        parcel.readStringList(rehydrated);
+        assertEquals(2, rehydrated.size());
+        assertEquals("str1", rehydrated.get(0));
+        assertEquals("str2", rehydrated.get(1));
+    }
 }