diff --git a/lib/java/src/org/apache/thrift/TDeserializer.java b/lib/java/src/org/apache/thrift/TDeserializer.java
index 1433f62..dd63996 100644
--- a/lib/java/src/org/apache/thrift/TDeserializer.java
+++ b/lib/java/src/org/apache/thrift/TDeserializer.java
@@ -680,20 +680,6 @@
     return this.processor_.prepareEnum(enumClass, ordinal);
   }
 
-  private <T extends TBase> T createNewStruct(ThriftMetadata.ThriftStruct data) {
-    T instance = null;
-
-    try {
-      instance = (T) this.getStructClass(data).newInstance();
-    } catch (InstantiationException e) {
-      throw new RuntimeException(e);
-    } catch (IllegalAccessException e) {
-      throw new RuntimeException(e);
-    }
-
-    return instance;
-  }
-
   private <T extends TBase> Class<T> getStructClass(ThriftMetadata.ThriftStruct data) {
     return (Class<T>) ((StructMetaData) data.data.valueMetaData).structClass;
   }
diff --git a/lib/java/src/org/apache/thrift/partial/PartialThriftComparer.java b/lib/java/src/org/apache/thrift/partial/PartialThriftComparer.java
index f0f33eb..f636c80 100644
--- a/lib/java/src/org/apache/thrift/partial/PartialThriftComparer.java
+++ b/lib/java/src/org/apache/thrift/partial/PartialThriftComparer.java
@@ -267,13 +267,15 @@
       return false;
     }
 
-    for (Object k1 : m1.keySet()) {
+    for (Map.Entry e1 : m1.entrySet()) {
+      Object k1 = e1.getKey();
+
       if (!m2.containsKey(k1)) {
         appendResult(data, sb, "Key %s in m1 not found in m2", k1);
         return false;
       }
 
-      Object v1 = m1.get(k1);
+      Object v1 = e1.getValue();
       Object v2 = m2.get(k1);
       if (!this.areEqual(data.valueData, v1, v2, sb)) {
         return false;
diff --git a/lib/java/src/org/apache/thrift/partial/ThriftMetadata.java b/lib/java/src/org/apache/thrift/partial/ThriftMetadata.java
index 984d972..1146720 100644
--- a/lib/java/src/org/apache/thrift/partial/ThriftMetadata.java
+++ b/lib/java/src/org/apache/thrift/partial/ThriftMetadata.java
@@ -236,17 +236,6 @@
           throw unsupportedFieldTypeException(fieldType);
       }
     }
-
-    private ThriftStruct getParentStruct() {
-      ThriftObject tparent = parent;
-      while (tparent != null) {
-        if (tparent instanceof ThriftStruct) {
-          return (ThriftStruct) tparent;
-        }
-        tparent = tparent.parent;
-      }
-      return null;
-    }
   }
 
   public static class ThriftEnum extends ThriftObject {
