diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java
index 4d1bf32..93d91d9 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java
@@ -32,7 +32,7 @@
 import java.util.NoSuchElementException;
 import java.util.Iterator;
 
-@SuppressWarnings("restriction")
+@SuppressWarnings({"restriction", "unchecked"})
 public class DurableArrayImpl<A extends RestorableAllocator<A>, E>
         extends DurableArray<E> implements MemoryDurableEntity<A> {
 
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java
index c54640b..f27df7b 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java
@@ -181,7 +181,7 @@
     this.autoReclaim = autoReclaim;
     DurableType gftypes[] = {DurableType.BOOLEAN};
     this.genericType = ArrayUtils.addAll(gType, gftypes);
-    this.factoryProxy = ArrayUtils.addAll(factoryProxy, null);
+    this.factoryProxy = ArrayUtils.addAll(factoryProxy, (EntityFactoryProxy[])null);
     try {
       this.unsafe = Utils.getUnsafe();
     } catch (Exception e) {
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java
index 4c3f226..e34fac3 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java
@@ -28,7 +28,7 @@
 import org.apache.mnemonic.RetrieveDurableEntityError;
 import org.apache.mnemonic.Utils;
 
-@SuppressWarnings("restriction")
+@SuppressWarnings({"restriction", "unchecked"})
 public class DurableTreeImpl<A extends RestorableAllocator<A>, E extends Comparable<E>>
   extends DurableTree<E> implements MemoryDurableEntity<A> {
 
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/DurableBuffer.java b/mnemonic-core/src/main/java/org/apache/mnemonic/DurableBuffer.java
index af21429..4a5ec8a 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/DurableBuffer.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/DurableBuffer.java
@@ -24,6 +24,7 @@
 public class DurableBuffer<A extends RetrievableAllocator<A>> extends MemBufferHolder<A> implements Durable {
   protected Persistence<A> m_persistOps = null;
 
+  @SuppressWarnings("unchecked")
   public DurableBuffer(A ar, ByteBuffer mres) {
     super(ar, mres);
     if (ar instanceof Persistence) {
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/DurableChunk.java b/mnemonic-core/src/main/java/org/apache/mnemonic/DurableChunk.java
index c06eeaa..34f4d47 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/DurableChunk.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/DurableChunk.java
@@ -22,6 +22,7 @@
 public class DurableChunk<A extends RetrievableAllocator<A>> extends MemChunkHolder<A> implements Durable {
   protected Persistence<A> m_persistOps = null;
 
+  @SuppressWarnings("unchecked")
   public DurableChunk(A ar, Long mres, long size) {
     super(ar, mres, size);
     if (ar instanceof Persistence) {
@@ -98,6 +99,7 @@
    * @return
    *          the ChunkBuffer to present the region of chunk
    */
+  @SuppressWarnings("unchecked")
   public ChunkBuffer getChunkBuffer(long offset, int size) {
     return new ChunkBuffer(this, offset, size);
   }
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/EntityFactoryProxyHelper.java b/mnemonic-core/src/main/java/org/apache/mnemonic/EntityFactoryProxyHelper.java
index 4f13182..d3731cc 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/EntityFactoryProxyHelper.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/EntityFactoryProxyHelper.java
@@ -74,6 +74,7 @@
     }
   }
 
+  @SuppressWarnings("unchecked")
   @Override
   public <A extends RestorableAllocator<A>> D create(
       A allocator, EntityFactoryProxy[] factoryproxys,
@@ -90,6 +91,7 @@
     return (D)o;
   }
 
+  @SuppressWarnings("unchecked")
   @Override
   public <A extends RestorableAllocator<A>> D create(
       ParameterHolder<A> ph) {
@@ -107,6 +109,7 @@
     return (D)o;
   }
 
+  @SuppressWarnings("unchecked")
   @Override
   public <A extends RestorableAllocator<A>> D restore(
       A allocator, EntityFactoryProxy[] factoryproxys,
@@ -123,6 +126,7 @@
     return (D)o;
   }
 
+  @SuppressWarnings("unchecked")
   @Override
   public <A extends RestorableAllocator<A>> D restore(
       ParameterHolder<A> ph) {
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java b/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java
index 3d22fe6..a357983 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java
@@ -71,7 +71,7 @@
    *          specify the field position
    *
    */
-  @SuppressWarnings({"restriction", "UseOfSunClasses"})
+  @SuppressWarnings({"restriction", "UseOfSunClasses", "unchecked"})
   public GenericField(EntityFactoryProxy defproxy, DurableType dgftype,
       EntityFactoryProxy[] efproxies, DurableType[] gftypes,
       A allocator, sun.misc.Unsafe unsafe, boolean autoreclaim, ReclaimContext rctx, Long fpos) {
diff --git a/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java b/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java
index ecb3864..3ddb668 100644
--- a/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java
+++ b/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java
@@ -33,7 +33,7 @@
  * Main is the class of example.
  *
  */
-@SuppressWarnings("restriction")
+@SuppressWarnings({"restriction", "unchecked"})
 public class Main {
 
   /**
diff --git a/mnemonic-sessions/src/main/java/org/apache/mnemonic/sessions/DurableInputSession.java b/mnemonic-sessions/src/main/java/org/apache/mnemonic/sessions/DurableInputSession.java
index f25b091..d1b0ea9 100644
--- a/mnemonic-sessions/src/main/java/org/apache/mnemonic/sessions/DurableInputSession.java
+++ b/mnemonic-sessions/src/main/java/org/apache/mnemonic/sessions/DurableInputSession.java
@@ -114,6 +114,7 @@
      *
      * @return the next node
      */
+    @SuppressWarnings("unchecked")
     @Override
     public V next() {
       V ret;
