diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java
index eba075a..72d1bbd 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java
@@ -26,7 +26,6 @@
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Map.Entry;
 
 public class MapType extends AbstractPrimitiveType<Map>
 {
@@ -96,18 +95,6 @@
         return len;
     }
 
-    private AMQPType<?> getKeyEncoding(EncoderImpl encoder, Object key)
-    {
-        if (fixedKeyType != null)
-        {
-            return fixedKeyType;
-        }
-        else
-        {
-            return encoder.getType(key);
-        }
-    }
-
     private static TypeConstructor<?> findNextDecoder(DecoderImpl decoder, ByteBuffer buffer, TypeConstructor<?> previousConstructor)
     {
         if (previousConstructor == null)
@@ -116,12 +103,9 @@
         }
         else
         {
-            buffer.mark();
-
-            byte encodingCode = buffer.get();
+            byte encodingCode = buffer.get(buffer.position());
             if (encodingCode == EncodingCodes.DESCRIBED_TYPE_INDICATOR || !(previousConstructor instanceof PrimitiveTypeEncoding<?>))
             {
-                buffer.reset();
                 return decoder.readConstructor();
             }
             else
@@ -129,9 +113,13 @@
                 PrimitiveTypeEncoding<?> primitiveConstructor = (PrimitiveTypeEncoding<?>) previousConstructor;
                 if (encodingCode != primitiveConstructor.getEncodingCode())
                 {
-                    buffer.reset();
                     return decoder.readConstructor();
                 }
+                else
+                {
+                    // consume the encoding code byte for real
+                    encodingCode = buffer.get();
+                }
             }
         }
 
