Index: src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java
===================================================================
--- src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java	(Revision 1666332)
+++ src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java	(Arbeitskopie)
@@ -20,6 +20,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
@@ -72,7 +73,7 @@
           {
               return null;
           }
-          COSBase retval = (COSBase)clonedVersion.get( base );
+          COSBase retval = clonedVersion.get( base );
           if( retval != null )
           {
               //we are done, it has already been converted.
@@ -80,7 +81,8 @@
           else if( base instanceof List)
           {
               COSArray array = new COSArray();
-              List list = (List)base;
+              @SuppressWarnings("unchecked")
+              List<?> list = (List<?>) base;
               for (Object obj : list)
               {
                   array.add(cloneForNewDocument(obj));
@@ -170,13 +172,14 @@
        * @param target the merge target
        * @throws IOException if an I/O error occurs
        */
-      public void cloneMerge( COSObjectable base, COSObjectable target) throws IOException
+      @SuppressWarnings("unchecked")
+    public void cloneMerge( final COSObjectable base, COSObjectable target) throws IOException
       {
           if( base == null )
           {
               return;
           }
-          COSBase retval = (COSBase)clonedVersion.get( base );
+          COSBase retval = clonedVersion.get( base );
           if( retval != null )
           {
               return;
@@ -185,16 +188,16 @@
           else if( base instanceof List )
           {
               COSArray array = new COSArray();
-              List list = (List)base;
+              List<?> list = (List<?>)base;
               for (Object obj : list)
               {
                   array.add(cloneForNewDocument(obj));
               }
-              ((List)target).add(array);
+              ((List<COSArray>)target).add(array);
           }
-          else if( base instanceof COSObjectable && !(base instanceof COSBase) )
+          else if( base instanceof COSBase) 
           {
-              cloneMerge(((COSObjectable)base).getCOSObject(), ((COSObjectable)target).getCOSObject() );
+              cloneMerge(base.getCOSObject(), target.getCOSObject() );
               clonedVersion.put(base, retval);
           }
           else if( base instanceof COSObject )
@@ -205,7 +208,7 @@
               }
               else if(target instanceof COSDictionary)
               {
-                  cloneMerge(((COSObject)base).getObject(), ((COSDictionary)target));
+                  cloneMerge(((COSObject)base).getObject(), (target));
               }
               clonedVersion.put( base, retval );
           }
