http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
index 9bdf4bd..f12cedc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
@@ -350,11 +350,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtTxFinishRequest _clone = new GridDhtTxFinishRequest();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -382,96 +378,99 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 21:
                 if (!writer.writeEnum("isolation", isolation))
                     return false;
 
-                state++;
+                state.increment();
 
             case 22:
                 if (!writer.writeIgniteUuid("miniId", miniId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 23:
                 if (!writer.writeUuid("nearNodeId", nearNodeId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 24:
                 if (!writer.writeMessage("nearTtls", nearTtls))
                     return false;
 
-                state++;
+                state.increment();
 
             case 25:
                 if (!writer.writeCollection("nearWritesBytes", 
nearWritesBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 26:
                 if (!writer.writeBoolean("onePhaseCommit", onePhaseCommit))
                     return false;
 
-                state++;
+                state.increment();
 
             case 27:
                 if (!writer.writeCollection("pendingVers", pendingVers, 
GridCacheVersion.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 28:
                 if (!writer.writeUuid("subjId", subjId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 29:
                 if (!writer.writeBoolean("sysInvalidate", sysInvalidate))
                     return false;
 
-                state++;
+                state.increment();
 
             case 30:
                 if (!writer.writeInt("taskNameHash", taskNameHash))
                     return false;
 
-                state++;
+                state.increment();
 
             case 31:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 32:
                 if (!writer.writeMessage("ttls", ttls))
                     return false;
 
-                state++;
+                state.increment();
 
             case 33:
                 if (!writer.writeMessage("writeVer", writeVer))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -486,14 +485,14 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 21:
                 isolation = reader.readEnum("isolation", 
IgniteTxIsolation.class);
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 22:
                 miniId = reader.readIgniteUuid("miniId");
@@ -501,7 +500,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 23:
                 nearNodeId = reader.readUuid("nearNodeId");
@@ -509,7 +508,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 24:
                 nearTtls = reader.readMessage("nearTtls");
@@ -517,7 +516,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 25:
                 nearWritesBytes = reader.readCollection("nearWritesBytes", 
byte[].class);
@@ -525,7 +524,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 26:
                 onePhaseCommit = reader.readBoolean("onePhaseCommit");
@@ -533,7 +532,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 27:
                 pendingVers = reader.readCollection("pendingVers", 
GridCacheVersion.class);
@@ -541,7 +540,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 28:
                 subjId = reader.readUuid("subjId");
@@ -549,7 +548,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 29:
                 sysInvalidate = reader.readBoolean("sysInvalidate");
@@ -557,7 +556,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 30:
                 taskNameHash = reader.readInt("taskNameHash");
@@ -565,7 +564,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 31:
                 topVer = reader.readLong("topVer");
@@ -573,7 +572,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 32:
                 ttls = reader.readMessage("ttls");
@@ -581,7 +580,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 33:
                 writeVer = reader.readMessage("writeVer");
@@ -589,7 +588,7 @@ public class GridDhtTxFinishRequest<K, V> extends 
GridDistributedTxFinishRequest
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
index c8b2046..4796c1c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java
@@ -71,11 +71,7 @@ public class GridDhtTxFinishResponse<K, V> extends 
GridDistributedTxFinishRespon
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtTxFinishResponse _clone = new GridDhtTxFinishResponse();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -90,24 +86,27 @@ public class GridDhtTxFinishResponse<K, V> extends 
GridDistributedTxFinishRespon
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 5:
                 if (!writer.writeIgniteUuid("miniId", miniId))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -122,14 +121,14 @@ public class GridDhtTxFinishResponse<K, V> extends 
GridDistributedTxFinishRespon
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 5:
                 miniId = reader.readIgniteUuid("miniId");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
index 92078f6..985104b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
@@ -314,11 +314,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtTxPrepareRequest _clone = new GridDhtTxPrepareRequest();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -346,90 +342,93 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 22:
                 if (!writer.writeIgniteUuid("futId", futId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 23:
                 if (!writer.writeBitSet("invalidateNearEntries", 
invalidateNearEntries))
                     return false;
 
-                state++;
+                state.increment();
 
             case 24:
                 if (!writer.writeBoolean("last", last))
                     return false;
 
-                state++;
+                state.increment();
 
             case 25:
                 if (!writer.writeIgniteUuid("miniId", miniId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 26:
                 if (!writer.writeUuid("nearNodeId", nearNodeId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 27:
                 if (!writer.writeCollection("nearWritesBytes", 
nearWritesBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 28:
                 if (!writer.writeMessage("nearXidVer", nearXidVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 29:
                 if (!writer.writeByteArray("ownedBytes", ownedBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 30:
                 if (!writer.writeBitSet("preloadKeys", preloadKeys))
                     return false;
 
-                state++;
+                state.increment();
 
             case 31:
                 if (!writer.writeUuid("subjId", subjId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 32:
                 if (!writer.writeInt("taskNameHash", taskNameHash))
                     return false;
 
-                state++;
+                state.increment();
 
             case 33:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -444,14 +443,14 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 22:
                 futId = reader.readIgniteUuid("futId");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 23:
                 invalidateNearEntries = 
reader.readBitSet("invalidateNearEntries");
@@ -459,7 +458,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 24:
                 last = reader.readBoolean("last");
@@ -467,7 +466,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 25:
                 miniId = reader.readIgniteUuid("miniId");
@@ -475,7 +474,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 26:
                 nearNodeId = reader.readUuid("nearNodeId");
@@ -483,7 +482,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 27:
                 nearWritesBytes = reader.readCollection("nearWritesBytes", 
byte[].class);
@@ -491,7 +490,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 28:
                 nearXidVer = reader.readMessage("nearXidVer");
@@ -499,7 +498,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 29:
                 ownedBytes = reader.readByteArray("ownedBytes");
@@ -507,7 +506,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 30:
                 preloadKeys = reader.readBitSet("preloadKeys");
@@ -515,7 +514,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 31:
                 subjId = reader.readUuid("subjId");
@@ -523,7 +522,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 32:
                 taskNameHash = reader.readInt("taskNameHash");
@@ -531,7 +530,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 33:
                 topVer = reader.readLong("topVer");
@@ -539,7 +538,7 @@ public class GridDhtTxPrepareRequest<K, V> extends 
GridDistributedTxPrepareReque
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
index 3196399..be8f5cd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java
@@ -207,11 +207,7 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtTxPrepareResponse _clone = new GridDhtTxPrepareResponse();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -232,48 +228,51 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 10:
                 if (!writer.writeIgniteUuid("futId", futId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 11:
                 if (!writer.writeCollection("invalidParts", invalidParts, 
int.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 12:
                 if (!writer.writeIgniteUuid("miniId", miniId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 13:
                 if (!writer.writeCollection("nearEvictedBytes", 
nearEvictedBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 14:
                 if (!writer.writeCollection("preloadEntriesBytes", 
preloadEntriesBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -288,14 +287,14 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 10:
                 futId = reader.readIgniteUuid("futId");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 11:
                 invalidParts = reader.readCollection("invalidParts", 
int.class);
@@ -303,7 +302,7 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 12:
                 miniId = reader.readIgniteUuid("miniId");
@@ -311,7 +310,7 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 13:
                 nearEvictedBytes = reader.readCollection("nearEvictedBytes", 
byte[].class);
@@ -319,7 +318,7 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 14:
                 preloadEntriesBytes = 
reader.readCollection("preloadEntriesBytes", byte[].class);
@@ -327,7 +326,7 @@ public class GridDhtTxPrepareResponse<K, V> extends 
GridDistributedTxPrepareResp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
index 7c381d6..e0efaa2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtUnlockRequest.java
@@ -106,11 +106,7 @@ public class GridDhtUnlockRequest<K, V> extends 
GridDistributedUnlockRequest<K,
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtUnlockRequest _clone = new GridDhtUnlockRequest();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -126,24 +122,27 @@ public class GridDhtUnlockRequest<K, V> extends 
GridDistributedUnlockRequest<K,
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 9:
                 if (!writer.writeCollection("nearKeyBytes", nearKeyBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -158,14 +157,14 @@ public class GridDhtUnlockRequest<K, V> extends 
GridDistributedUnlockRequest<K,
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 9:
                 nearKeyBytes = reader.readCollection("nearKeyBytes", 
byte[].class);
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
index 955bb4f..5e16c4a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicDeferredUpdateResponse.java
@@ -75,11 +75,7 @@ public class GridDhtAtomicDeferredUpdateResponse<K, V> 
extends GridCacheMessage<
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtAtomicDeferredUpdateResponse _clone = new 
GridDhtAtomicDeferredUpdateResponse();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -94,24 +90,27 @@ public class GridDhtAtomicDeferredUpdateResponse<K, V> 
extends GridCacheMessage<
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeCollection("futVers", futVers, 
GridCacheVersion.class))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -126,14 +125,14 @@ public class GridDhtAtomicDeferredUpdateResponse<K, V> 
extends GridCacheMessage<
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 futVers = reader.readCollection("futVers", 
GridCacheVersion.class);
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
index 7672f6c..a227a97 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateRequest.java
@@ -683,11 +683,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtAtomicUpdateRequest _clone = new GridDhtAtomicUpdateRequest();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -728,138 +724,141 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeMessage("drExpireTimes", drExpireTimes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeCollection("drVers", drVers, 
GridCacheVersion.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeCollection("entryProcessorsBytes", 
entryProcessorsBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeBoolean("forceTransformBackups", 
forceTransformBackups))
                     return false;
 
-                state++;
+                state.increment();
 
             case 7:
                 if (!writer.writeMessage("futVer", futVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 8:
                 if (!writer.writeObjectArray("invokeArgsBytes", 
invokeArgsBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 9:
                 if (!writer.writeCollection("keyBytes", keyBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 10:
                 if (!writer.writeCollection("nearEntryProcessorsBytes", 
nearEntryProcessorsBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 11:
                 if (!writer.writeMessage("nearExpireTimes", nearExpireTimes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 12:
                 if (!writer.writeCollection("nearKeyBytes", nearKeyBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 13:
                 if (!writer.writeMessage("nearTtls", nearTtls))
                     return false;
 
-                state++;
+                state.increment();
 
             case 14:
                 if (!writer.writeCollection("nearValBytes", nearValBytes, 
GridCacheValueBytes.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 15:
                 if (!writer.writeUuid("nodeId", nodeId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 16:
                 if (!writer.writeUuid("subjId", subjId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 17:
                 if (!writer.writeEnum("syncMode", syncMode))
                     return false;
 
-                state++;
+                state.increment();
 
             case 18:
                 if (!writer.writeInt("taskNameHash", taskNameHash))
                     return false;
 
-                state++;
+                state.increment();
 
             case 19:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 20:
                 if (!writer.writeMessage("ttls", ttls))
                     return false;
 
-                state++;
+                state.increment();
 
             case 21:
                 if (!writer.writeCollection("valBytes", valBytes, 
GridCacheValueBytes.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 22:
                 if (!writer.writeMessage("writeVer", writeVer))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -874,14 +873,14 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 drExpireTimes = reader.readMessage("drExpireTimes");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 drVers = reader.readCollection("drVers", 
GridCacheVersion.class);
@@ -889,7 +888,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 entryProcessorsBytes = 
reader.readCollection("entryProcessorsBytes", byte[].class);
@@ -897,7 +896,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 forceTransformBackups = 
reader.readBoolean("forceTransformBackups");
@@ -905,7 +904,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 7:
                 futVer = reader.readMessage("futVer");
@@ -913,7 +912,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 8:
                 invokeArgsBytes = reader.readObjectArray("invokeArgsBytes", 
byte[].class);
@@ -921,7 +920,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 9:
                 keyBytes = reader.readCollection("keyBytes", byte[].class);
@@ -929,7 +928,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 10:
                 nearEntryProcessorsBytes = 
reader.readCollection("nearEntryProcessorsBytes", byte[].class);
@@ -937,7 +936,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 11:
                 nearExpireTimes = reader.readMessage("nearExpireTimes");
@@ -945,7 +944,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 12:
                 nearKeyBytes = reader.readCollection("nearKeyBytes", 
byte[].class);
@@ -953,7 +952,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 13:
                 nearTtls = reader.readMessage("nearTtls");
@@ -961,7 +960,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 14:
                 nearValBytes = reader.readCollection("nearValBytes", 
GridCacheValueBytes.class);
@@ -969,7 +968,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 15:
                 nodeId = reader.readUuid("nodeId");
@@ -977,7 +976,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 16:
                 subjId = reader.readUuid("subjId");
@@ -985,7 +984,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 17:
                 syncMode = reader.readEnum("syncMode", 
CacheWriteSynchronizationMode.class);
@@ -993,7 +992,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 18:
                 taskNameHash = reader.readInt("taskNameHash");
@@ -1001,7 +1000,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 19:
                 topVer = reader.readLong("topVer");
@@ -1009,7 +1008,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 20:
                 ttls = reader.readMessage("ttls");
@@ -1017,7 +1016,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 21:
                 valBytes = reader.readCollection("valBytes", 
GridCacheValueBytes.class);
@@ -1025,7 +1024,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 22:
                 writeVer = reader.readMessage("writeVer");
@@ -1033,7 +1032,7 @@ public class GridDhtAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> imp
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
index 94be1c3..f1a557a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateResponse.java
@@ -180,11 +180,7 @@ public class GridDhtAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> im
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtAtomicUpdateResponse _clone = new GridDhtAtomicUpdateResponse();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -205,42 +201,45 @@ public class GridDhtAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> im
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeByteArray("errBytes", errBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeByteArray("failedKeysBytes", failedKeysBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeMessage("futVer", futVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeCollection("nearEvictedBytes", 
nearEvictedBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -255,14 +254,14 @@ public class GridDhtAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> im
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 errBytes = reader.readByteArray("errBytes");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 failedKeysBytes = reader.readByteArray("failedKeysBytes");
@@ -270,7 +269,7 @@ public class GridDhtAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 futVer = reader.readMessage("futVer");
@@ -278,7 +277,7 @@ public class GridDhtAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 nearEvictedBytes = reader.readCollection("nearEvictedBytes", 
byte[].class);
@@ -286,7 +285,7 @@ public class GridDhtAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
index ed5b3b3..2198e72 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateRequest.java
@@ -545,11 +545,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridNearAtomicUpdateRequest _clone = new GridNearAtomicUpdateRequest();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -588,132 +584,135 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeMessage("drExpireTimes", drExpireTimes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeMessage("drTtls", drTtls))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeCollection("drVers", drVers, 
GridCacheVersion.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeByteArray("expiryPlcBytes", expiryPlcBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 7:
                 if (!writer.writeBoolean("fastMap", fastMap))
                     return false;
 
-                state++;
+                state.increment();
 
             case 8:
                 if (!writer.writeObjectArray("filterBytes", filterBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 9:
                 if (!writer.writeBoolean("forceTransformBackups", 
forceTransformBackups))
                     return false;
 
-                state++;
+                state.increment();
 
             case 10:
                 if (!writer.writeMessage("futVer", futVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 11:
                 if (!writer.writeBoolean("hasPrimary", hasPrimary))
                     return false;
 
-                state++;
+                state.increment();
 
             case 12:
                 if (!writer.writeObjectArray("invokeArgsBytes", 
invokeArgsBytes, byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 13:
                 if (!writer.writeCollection("keyBytes", keyBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 14:
                 if (!writer.writeEnum("op", op))
                     return false;
 
-                state++;
+                state.increment();
 
             case 15:
                 if (!writer.writeBoolean("retval", retval))
                     return false;
 
-                state++;
+                state.increment();
 
             case 16:
                 if (!writer.writeUuid("subjId", subjId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 17:
                 if (!writer.writeEnum("syncMode", syncMode))
                     return false;
 
-                state++;
+                state.increment();
 
             case 18:
                 if (!writer.writeInt("taskNameHash", taskNameHash))
                     return false;
 
-                state++;
+                state.increment();
 
             case 19:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 20:
                 if (!writer.writeMessage("updateVer", updateVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 21:
                 if (!writer.writeCollection("valBytes", valBytes, 
GridCacheValueBytes.class))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -728,14 +727,14 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 drExpireTimes = reader.readMessage("drExpireTimes");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 drTtls = reader.readMessage("drTtls");
@@ -743,7 +742,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 drVers = reader.readCollection("drVers", 
GridCacheVersion.class);
@@ -751,7 +750,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 expiryPlcBytes = reader.readByteArray("expiryPlcBytes");
@@ -759,7 +758,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 7:
                 fastMap = reader.readBoolean("fastMap");
@@ -767,7 +766,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 8:
                 filterBytes = reader.readObjectArray("filterBytes", 
byte[].class);
@@ -775,7 +774,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 9:
                 forceTransformBackups = 
reader.readBoolean("forceTransformBackups");
@@ -783,7 +782,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 10:
                 futVer = reader.readMessage("futVer");
@@ -791,7 +790,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 11:
                 hasPrimary = reader.readBoolean("hasPrimary");
@@ -799,7 +798,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 12:
                 invokeArgsBytes = reader.readObjectArray("invokeArgsBytes", 
byte[].class);
@@ -807,7 +806,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 13:
                 keyBytes = reader.readCollection("keyBytes", byte[].class);
@@ -815,7 +814,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 14:
                 op = reader.readEnum("op", GridCacheOperation.class);
@@ -823,7 +822,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 15:
                 retval = reader.readBoolean("retval");
@@ -831,7 +830,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 16:
                 subjId = reader.readUuid("subjId");
@@ -839,7 +838,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 17:
                 syncMode = reader.readEnum("syncMode", 
CacheWriteSynchronizationMode.class);
@@ -847,7 +846,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 18:
                 taskNameHash = reader.readInt("taskNameHash");
@@ -855,7 +854,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 19:
                 topVer = reader.readLong("topVer");
@@ -863,7 +862,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 20:
                 updateVer = reader.readMessage("updateVer");
@@ -871,7 +870,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 21:
                 valBytes = reader.readCollection("valBytes", 
GridCacheValueBytes.class);
@@ -879,7 +878,7 @@ public class GridNearAtomicUpdateRequest<K, V> extends 
GridCacheMessage<K, V> im
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
index 05b7463..b75d4e6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
@@ -420,11 +420,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridNearAtomicUpdateResponse _clone = new 
GridNearAtomicUpdateResponse();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -455,84 +451,87 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
     /** {@inheritDoc} */
     @SuppressWarnings("fallthrough")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeByteArray("errBytes", errBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeByteArray("failedKeysBytes", failedKeysBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeMessage("futVer", futVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeMessage("nearExpireTimes", nearExpireTimes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 7:
                 if (!writer.writeCollection("nearSkipIdxs", nearSkipIdxs, 
int.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 8:
                 if (!writer.writeMessage("nearTtls", nearTtls))
                     return false;
 
-                state++;
+                state.increment();
 
             case 9:
                 if (!writer.writeCollection("nearValBytes", nearValBytes, 
GridCacheValueBytes.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 10:
                 if (!writer.writeCollection("nearValsIdxs", nearValsIdxs, 
int.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 11:
                 if (!writer.writeMessage("nearVer", nearVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 12:
                 if (!writer.writeByteArray("remapKeysBytes", remapKeysBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 13:
                 if (!writer.writeByteArray("retValBytes", retValBytes))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -547,14 +546,14 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 errBytes = reader.readByteArray("errBytes");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 failedKeysBytes = reader.readByteArray("failedKeysBytes");
@@ -562,7 +561,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 futVer = reader.readMessage("futVer");
@@ -570,7 +569,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 nearExpireTimes = reader.readMessage("nearExpireTimes");
@@ -578,7 +577,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 7:
                 nearSkipIdxs = reader.readCollection("nearSkipIdxs", 
int.class);
@@ -586,7 +585,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 8:
                 nearTtls = reader.readMessage("nearTtls");
@@ -594,7 +593,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 9:
                 nearValBytes = reader.readCollection("nearValBytes", 
GridCacheValueBytes.class);
@@ -602,7 +601,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 10:
                 nearValsIdxs = reader.readCollection("nearValsIdxs", 
int.class);
@@ -610,7 +609,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 11:
                 nearVer = reader.readMessage("nearVer");
@@ -618,7 +617,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 12:
                 remapKeysBytes = reader.readByteArray("remapKeysBytes");
@@ -626,7 +625,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 13:
                 retValBytes = reader.readByteArray("retValBytes");
@@ -634,7 +633,7 @@ public class GridNearAtomicUpdateResponse<K, V> extends 
GridCacheMessage<K, V> i
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
index 60c4a9a..7b523ee 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysRequest.java
@@ -164,11 +164,7 @@ public class GridDhtForceKeysRequest<K, V> extends 
GridCacheMessage<K, V> implem
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtForceKeysRequest _clone = new GridDhtForceKeysRequest();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -187,42 +183,45 @@ public class GridDhtForceKeysRequest<K, V> extends 
GridCacheMessage<K, V> implem
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeIgniteUuid("futId", futId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeCollection("keyBytes", keyBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeIgniteUuid("miniId", miniId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -237,14 +236,14 @@ public class GridDhtForceKeysRequest<K, V> extends 
GridCacheMessage<K, V> implem
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 futId = reader.readIgniteUuid("futId");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 keyBytes = reader.readCollection("keyBytes", byte[].class);
@@ -252,7 +251,7 @@ public class GridDhtForceKeysRequest<K, V> extends 
GridCacheMessage<K, V> implem
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 miniId = reader.readIgniteUuid("miniId");
@@ -260,7 +259,7 @@ public class GridDhtForceKeysRequest<K, V> extends 
GridCacheMessage<K, V> implem
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 topVer = reader.readLong("topVer");
@@ -268,7 +267,7 @@ public class GridDhtForceKeysRequest<K, V> extends 
GridCacheMessage<K, V> implem
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
index ff8cdca..e2ceaf4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysResponse.java
@@ -167,11 +167,7 @@ public class GridDhtForceKeysResponse<K, V> extends 
GridCacheMessage<K, V> imple
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtForceKeysResponse _clone = new GridDhtForceKeysResponse();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -191,42 +187,45 @@ public class GridDhtForceKeysResponse<K, V> extends 
GridCacheMessage<K, V> imple
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeIgniteUuid("futId", futId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeByteArray("infosBytes", infosBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeIgniteUuid("miniId", miniId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeCollection("missedKeyBytes", missedKeyBytes, 
byte[].class))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -241,14 +240,14 @@ public class GridDhtForceKeysResponse<K, V> extends 
GridCacheMessage<K, V> imple
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 futId = reader.readIgniteUuid("futId");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 infosBytes = reader.readByteArray("infosBytes");
@@ -256,7 +255,7 @@ public class GridDhtForceKeysResponse<K, V> extends 
GridCacheMessage<K, V> imple
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 miniId = reader.readIgniteUuid("miniId");
@@ -264,7 +263,7 @@ public class GridDhtForceKeysResponse<K, V> extends 
GridCacheMessage<K, V> imple
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 missedKeyBytes = reader.readCollection("missedKeyBytes", 
byte[].class);
@@ -272,7 +271,7 @@ public class GridDhtForceKeysResponse<K, V> extends 
GridCacheMessage<K, V> imple
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
index 29760f6..93e48ca 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
@@ -192,11 +192,7 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
     /** {@inheritDoc} */
     @SuppressWarnings({"CloneDoesntCallSuperClone", "CloneCallsConstructors"})
     @Override public MessageAdapter clone() {
-        GridDhtPartitionDemandMessage _clone = new 
GridDhtPartitionDemandMessage();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
@@ -217,54 +213,57 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
     /** {@inheritDoc} */
     @SuppressWarnings("all")
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
         if (!super.writeTo(buf))
             return false;
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 3:
                 if (!writer.writeCollection("parts", parts, int.class))
                     return false;
 
-                state++;
+                state.increment();
 
             case 4:
                 if (!writer.writeLong("timeout", timeout))
                     return false;
 
-                state++;
+                state.increment();
 
             case 5:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
             case 6:
                 if (!writer.writeByteArray("topicBytes", topicBytes))
                     return false;
 
-                state++;
+                state.increment();
 
             case 7:
                 if (!writer.writeLong("updateSeq", updateSeq))
                     return false;
 
-                state++;
+                state.increment();
 
             case 8:
                 if (!writer.writeInt("workerId", workerId))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -279,14 +278,14 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
         if (!super.readFrom(buf))
             return false;
 
-        switch (state) {
+        switch (readState) {
             case 3:
                 parts = reader.readCollection("parts", int.class);
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 4:
                 timeout = reader.readLong("timeout");
@@ -294,7 +293,7 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 5:
                 topVer = reader.readLong("topVer");
@@ -302,7 +301,7 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 6:
                 topicBytes = reader.readByteArray("topicBytes");
@@ -310,7 +309,7 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 7:
                 updateSeq = reader.readLong("updateSeq");
@@ -318,7 +317,7 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 8:
                 workerId = reader.readInt("workerId");
@@ -326,7 +325,7 @@ public class GridDhtPartitionDemandMessage<K, V> extends 
GridCacheMessage<K, V>
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/947723c9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionExchangeId.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionExchangeId.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionExchangeId.java
index c46b4c5..0aeb6ee 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionExchangeId.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionExchangeId.java
@@ -147,33 +147,36 @@ public class GridDhtPartitionExchangeId extends 
MessageAdapter implements Compar
 
     /** {@inheritDoc} */
     @Override public boolean writeTo(ByteBuffer buf) {
+        MessageWriteState state = MessageWriteState.get();
+        MessageWriter writer = state.writer();
+
         writer.setBuffer(buf);
 
-        if (!typeWritten) {
+        if (!state.isTypeWritten()) {
             if (!writer.writeByte(null, directType()))
                 return false;
 
-            typeWritten = true;
+            state.setTypeWritten();
         }
 
-        switch (state) {
+        switch (state.index()) {
             case 0:
                 if (!writer.writeInt("evt", evt))
                     return false;
 
-                state++;
+                state.increment();
 
             case 1:
                 if (!writer.writeUuid("nodeId", nodeId))
                     return false;
 
-                state++;
+                state.increment();
 
             case 2:
                 if (!writer.writeLong("topVer", topVer))
                     return false;
 
-                state++;
+                state.increment();
 
         }
 
@@ -184,14 +187,14 @@ public class GridDhtPartitionExchangeId extends 
MessageAdapter implements Compar
     @Override public boolean readFrom(ByteBuffer buf) {
         reader.setBuffer(buf);
 
-        switch (state) {
+        switch (readState) {
             case 0:
                 evt = reader.readInt("evt");
 
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 1:
                 nodeId = reader.readUuid("nodeId");
@@ -199,7 +202,7 @@ public class GridDhtPartitionExchangeId extends 
MessageAdapter implements Compar
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
             case 2:
                 topVer = reader.readLong("topVer");
@@ -207,7 +210,7 @@ public class GridDhtPartitionExchangeId extends 
MessageAdapter implements Compar
                 if (!reader.isLastRead())
                     return false;
 
-                state++;
+                readState++;
 
         }
 
@@ -222,11 +225,7 @@ public class GridDhtPartitionExchangeId extends 
MessageAdapter implements Compar
     /** {@inheritDoc} */
     @SuppressWarnings("CloneDoesntCallSuperClone")
     @Override public MessageAdapter clone() {
-        GridDhtPartitionExchangeId _clone = new GridDhtPartitionExchangeId();
-
-        clone0(_clone);
-
-        return _clone;
+        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */

Reply via email to