Use composition instead of inheritance
diff --git a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/serialization/CompressingSerializer.java b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/serialization/CompressingSerializer.java
index 9043822..b9ffb80 100644
--- a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/serialization/CompressingSerializer.java
+++ b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/serialization/CompressingSerializer.java
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 
+import org.apache.commons.jcs3.engine.behavior.IElementSerializer;
 import org.apache.commons.jcs3.utils.zip.CompressionUtil;
 
 /**
@@ -28,6 +29,28 @@
  */
 public class CompressingSerializer extends StandardSerializer
 {
+    /** Wrapped serializer */
+    private final IElementSerializer serializer;
+
+
+    /**
+     * Default constructor
+     */
+    public CompressingSerializer()
+    {
+        this(new StandardSerializer());
+    }
+
+    /**
+     * Wrapper constructor
+     *
+     * @param serializer the wrapped serializer
+     */
+    public CompressingSerializer(IElementSerializer serializer)
+    {
+        this.serializer = serializer;
+    }
+
     /**
      * Serializes an object using default serialization. Compresses the byte array.
      * <p>
@@ -39,7 +62,7 @@
     public <T> byte[] serialize( final T obj )
         throws IOException
     {
-        final byte[] uncompressed = super.serialize(obj);
+        final byte[] uncompressed = serializer.serialize(obj);
         final byte[] compressed = CompressionUtil.compressByteArray( uncompressed );
         return compressed;
     }
@@ -64,6 +87,6 @@
         }
 
         final byte[] decompressedByteArray = CompressionUtil.decompressByteArray( data );
-        return super.deSerialize(decompressedByteArray, loader);
+        return serializer.deSerialize(decompressedByteArray, loader);
     }
 }