You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2019/01/02 05:14:32 UTC

[directory-ldap-api] branch master updated: Made the Asn1Decoder class a static class

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git


The following commit(s) were added to refs/heads/master by this push:
     new 0df6b09  Made the Asn1Decoder class a static class
0df6b09 is described below

commit 0df6b091e65094e2095b2d84a632b2d8afca5b12
Author: Emmanuel Lecharny <el...@apache.org>
AuthorDate: Wed Jan 2 06:14:30 2019 +0100

    Made the Asn1Decoder class a static class
---
 .../apache/directory/api/asn1/ber/Asn1Decoder.java |  71 ++------
 .../api/asn1/ber/tlv/TLVBerDecoderMBean.java       |  32 ----
 .../java/org/apache/directory/api/i18n/I18n.java   |   2 +-
 .../apache/directory/api/i18n/errors.properties    |   1 +
 .../directory/api/osgi/ApiAsn1BerOsgiTest.java     |   3 -
 .../api/ldap/codec/api/AbstractControlFactory.java |   2 +-
 .../directory/api/ldap/codec/api/LdapDecoder.java  |   6 +-
 .../directory/api/ldap/codec/LdapControlTest.java  |  24 +--
 .../directory/api/ldap/codec/LdapDecoderTest.java  |  48 ++----
 .../directory/api/ldap/codec/LdapMessageTest.java  |  30 +---
 .../directory/api/ldap/codec/LdapResultTest.java   |  40 ++---
 .../api/ldap/codec/abandon/AbandonRequestTest.java |  18 +-
 .../api/ldap/codec/add/AddRequestTest.java         |  43 ++---
 .../api/ldap/codec/add/AddResponseTest.java        |  12 +-
 .../api/ldap/codec/bind/BindRequestTest.java       |  90 +++-------
 .../api/ldap/codec/bind/BindResponseTest.java      |  24 +--
 .../api/ldap/codec/compare/CompareRequestTest.java |  32 +---
 .../ldap/codec/compare/CompareResponseTest.java    |  12 +-
 .../api/ldap/codec/del/DelRequestTest.java         |  16 +-
 .../api/ldap/codec/del/DelResponseTest.java        |  12 +-
 .../intermediate/IntermediateResponseTest.java     |  40 ++---
 .../api/ldap/codec/modify/ModifyRequestTest.java   |  76 +++------
 .../api/ldap/codec/modify/ModifyResponseTest.java  |  12 +-
 .../ldap/codec/modifyDn/ModifyDNRequestTest.java   |  44 ++---
 .../ldap/codec/modifyDn/ModifyDNResponseTest.java  |  12 +-
 .../SearchRequestMatchingRuleAssertionTest.java    |  39 ++---
 .../codec/search/SearchRequestSubstringTest.java   |  78 +++------
 .../api/ldap/codec/search/SearchRequestTest.java   | 184 ++++++---------------
 .../ldap/codec/search/SearchResultDoneTest.java    |  12 +-
 .../ldap/codec/search/SearchResultEntryTest.java   |  68 ++------
 .../codec/search/SearchResultReferenceTest.java    |  16 +-
 .../api/ldap/codec/unbind/UnBindRequestTest.java   |  12 +-
 .../extended/ads_impl/cancel/CancelFactory.java    |   2 +-
 .../certGeneration/CertGenerationFactory.java      |   2 +-
 .../endTransaction/EndTransactionFactory.java      |   4 +-
 .../EndTransactionResponseContainer.java           |   3 +-
 .../GracefulDisconnectFactory.java                 |   2 +-
 .../gracefulShutdown/GracefulShutdownFactory.java  |   2 +-
 .../ads_impl/pwdModify/PasswordModifyFactory.java  |   4 +-
 .../storedProcedure/StoredProcedureFactory.java    |   2 +-
 .../syncrepl_impl/SyncInfoValueFactory.java        |   2 +-
 .../ldap/extras/extended/ExtendedRequestTest.java  |  32 +---
 .../ldap/extras/extended/ExtendedResponseTest.java |  44 ++---
 .../codec/protocol/mina/LdapProtocolDecoder.java   |   7 +-
 .../codec/protocol/mina/LdapProtocolEncoder.java   |   2 +-
 45 files changed, 310 insertions(+), 909 deletions(-)

diff --git a/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/Asn1Decoder.java b/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/Asn1Decoder.java
index a2e08f1..6f096ca 100644
--- a/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/Asn1Decoder.java
+++ b/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/Asn1Decoder.java
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
 */
-public class Asn1Decoder implements TLVBerDecoderMBean
+public final class Asn1Decoder implements TLVBerDecoderMBean
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( Asn1Decoder.class );
@@ -64,7 +64,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
     /**
      * A public constructor of an Asn1 Decoder.
      */
-    public Asn1Decoder()
+    private Asn1Decoder()
     {
         indefiniteLengthAllowed = false;
         maxLengthLength = 1;
@@ -81,7 +81,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * @return <code>true</code> if there are more bytes to read, <code>false
      * </code> otherwise
      */
-    private boolean treatTagStartState( ByteBuffer stream, Asn1Container container )
+    private static  boolean treatTagStartState( ByteBuffer stream, Asn1Container container )
     {
         if ( stream.hasRemaining() )
         {
@@ -120,7 +120,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * 
      * @param container The container
      */
-    private void dumpTLVTree( Asn1Container container )
+    private static void dumpTLVTree( Asn1Container container )
     {
         StringBuilder sb = new StringBuilder();
         TLV current = container.getCurrentTLV();
@@ -150,7 +150,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * @param container The container
      * @return <code>true</code> if the TLV has been decoded
      */
-    private boolean isTLVDecoded( Asn1Container container )
+    private static boolean isTLVDecoded( Asn1Container container )
     {
         TLV current = container.getCurrentTLV();
         TLV parent = current.getParent();
@@ -189,7 +189,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * </code> otherwise
      * @throws DecoderException Thrown if anything went wrong
      */
-    private boolean treatLengthStartState( ByteBuffer stream, Asn1Container container ) throws DecoderException
+    private static boolean treatLengthStartState( ByteBuffer stream, Asn1Container container ) throws DecoderException
     {
         if ( stream.hasRemaining() )
         {
@@ -247,7 +247,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * @return <code>true</code> if there are more bytes to read, <code>false
      * </code> otherwise
      */
-    private boolean treatLengthPendingState( ByteBuffer stream, Asn1Container container )
+    private static boolean treatLengthPendingState( ByteBuffer stream, Asn1Container container )
     {
         if ( stream.hasRemaining() )
         {
@@ -302,7 +302,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * @param tlv The current TLV.
      * @return A string which represent the expected length stack.
      */
-    private String getParentLength( TLV tlv )
+    private static String getParentLength( TLV tlv )
     {
         StringBuilder buffer = new StringBuilder();
 
@@ -335,7 +335,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * the result and other informations.
      * @throws DecoderException Thrown if anything went wrong
      */
-    private void treatLengthEndState( Asn1Container container ) throws DecoderException
+    private static void treatLengthEndState( Asn1Container container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
@@ -508,7 +508,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * @return <code>true</code> if there are more bytes to read, <code>false
      * </code> otherwise
      */
-    private boolean treatValueStartState( ByteBuffer stream, Asn1Container container )
+    private static  boolean treatValueStartState( ByteBuffer stream, Asn1Container container )
     {
         TLV currentTlv = container.getCurrentTLV();
 
@@ -553,7 +553,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * value has been decoded, <code>END</code> if whe still need to get some
      * more bytes.
      */
-    private boolean treatValuePendingState( ByteBuffer stream, Asn1Container container )
+    private static boolean treatValuePendingState( ByteBuffer stream, Asn1Container container )
     {
         TLV currentTlv = container.getCurrentTLV();
 
@@ -593,7 +593,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * @throws DecoderException Thrown if anything went wrong
      */
     @SuppressWarnings("unchecked")
-    private boolean treatTLVDoneState( ByteBuffer stream, Asn1Container container ) throws DecoderException
+    private static boolean treatTLVDoneState( ByteBuffer stream, Asn1Container container ) throws DecoderException
     {
         if ( LOG.isDebugEnabled() )
         {
@@ -646,7 +646,7 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * and other elements.
      * @throws DecoderException Thrown if anything went wrong!
      */
-    public void decode( ByteBuffer stream, Asn1Container container ) throws DecoderException
+    public static void decode( ByteBuffer stream, Asn1Container container ) throws DecoderException
     {
         /*
          * We have to deal with the current state. This is an infinite loop,
@@ -814,54 +814,9 @@ public class Asn1Decoder implements TLVBerDecoderMBean
      * {@inheritDoc}
      */
     @Override
-    public void disallowIndefiniteLength()
-    {
-        this.indefiniteLengthAllowed = false;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void allowIndefiniteLength()
-    {
-        this.indefiniteLengthAllowed = true;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
     public boolean isIndefiniteLengthAllowed()
     {
 
         return indefiniteLengthAllowed;
     }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setMaxLengthLength( int maxLengthLength ) throws DecoderException
-    {
-        if ( ( this.indefiniteLengthAllowed ) && ( maxLengthLength > 126 ) )
-        {
-            throw new DecoderException( I18n.err( I18n.ERR_01006_LENGTH_TOO_LONG_FOR_DEFINITE_FORM ) );
-        }
-
-        this.maxLengthLength = maxLengthLength;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setMaxTagLength( int maxTagLength )
-    {
-        this.maxTagLength = maxTagLength;
-    }
 }
diff --git a/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/tlv/TLVBerDecoderMBean.java b/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/tlv/TLVBerDecoderMBean.java
index ce39c42..5682758 100644
--- a/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/tlv/TLVBerDecoderMBean.java
+++ b/asn1/ber/src/main/java/org/apache/directory/api/asn1/ber/tlv/TLVBerDecoderMBean.java
@@ -20,9 +20,6 @@
 package org.apache.directory.api.asn1.ber.tlv;
 
 
-import org.apache.directory.api.asn1.DecoderException;
-
-
 /**
  * A MBean used to get stats on the decoding process.
  * 
@@ -31,35 +28,6 @@ import org.apache.directory.api.asn1.DecoderException;
 public interface TLVBerDecoderMBean
 {
     /**
-     * Set the number of bytes that can be used to encode the Value length,
-     * including the first byte. Max is 127 if the Length use a definite form,
-     * default is 1
-     * 
-     * @param length the number of byte to use
-     * @throws DecoderException Thrown if the indefinite length is 
-     * allowed or if the length's Length is above 126 bytes
-     */
-    void setMaxLengthLength( int length ) throws DecoderException;
-
-
-    /**
-     * Set the maximum number of bytes that should be used to encode a Tag
-     * label, including the first byte. Default is 1, no maximum
-     * 
-     * @param length The length to use
-     */
-    void setMaxTagLength( int length );
-
-
-    /** Allow indefinite length. */
-    void allowIndefiniteLength();
-
-
-    /** Disallow indefinite length. */
-    void disallowIndefiniteLength();
-
-
-    /**
      * Get the actual maximum number of bytes that can be used to encode the
      * Length
      * 
diff --git a/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java b/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java
index b3a4340..1ba1dba 100644
--- a/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java
+++ b/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java
@@ -835,7 +835,7 @@ public enum I18n
     ERR_13414_AT_DOES_NOT_HAVE_A_SUPERIOR_NOR_SYNTAX( "ERR_13414_AT_DOES_NOT_HAVE_A_SUPERIOR_NOR_SYNTAX" ),
 
     // api-ldap-net-mina                14000 - 14999
-    // none
+    ERR_14000_ERROR_ENCODING_MESSAGE( "ERR_14000_ERROR_ENCODING_MESSAGE" ),
 
     // api-ldap-schema-converter        15000 - 15999
     ERR_15000_SCHEMA_ELEMENT_NAME_REQUIRED( "ERR_15000_SCHEMA_ELEMENT_NAME_REQUIRED" ),
diff --git a/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties b/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties
index 3650d45..23519e1 100644
--- a/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties
+++ b/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties
@@ -828,6 +828,7 @@ ERR_13413_MR_DOES_NOT_HAVE_A_COMP=The MatchingRule {0} does not have a comparato
 ERR_13414_AT_DOES_NOT_HAVE_A_SUPERIOR_NOR_SYNTAX=The AttributeType {0} does not have a superior nor a Syntax. This is invalid
 
 # api-ldap-net-mina 14000-14999
+ERR_14000_ERROR_ENCODING_MESSAGE=Error while encoding message {0}: {1} 
 
 # api-ldap-schema-converter 15000-15999
 ERR_15000_SCHEMA_ELEMENT_NAME_REQUIRED={0} the schema configuration element must specify a name.
diff --git a/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiAsn1BerOsgiTest.java b/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiAsn1BerOsgiTest.java
index a9432c9..62e1f09 100644
--- a/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiAsn1BerOsgiTest.java
+++ b/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiAsn1BerOsgiTest.java
@@ -22,7 +22,6 @@ package org.apache.directory.api.osgi;
 
 import org.apache.directory.api.asn1.actions.CheckNotNullLength;
 import org.apache.directory.api.asn1.ber.Asn1Container;
-import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.ber.tlv.BerValue;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 
@@ -41,9 +40,7 @@ public class ApiAsn1BerOsgiTest extends ApiOsgiTestBase
     protected void useBundleClasses() throws Exception
     {
         new CheckNotNullLength<Asn1Container>();
-        new Asn1Decoder().getMaxLengthLength();
         new BerValue().init( 5 );
         new TLV( 1 ).getValue();
     }
-
 }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractControlFactory.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractControlFactory.java
index 8bd4532..9063ce4 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractControlFactory.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractControlFactory.java
@@ -91,6 +91,6 @@ public abstract class AbstractControlFactory<C extends Control> implements Contr
     {
         ByteBuffer buffer = ByteBuffer.wrap( controlBytes );
         container.setControl( control );
-        new Asn1Decoder().decode( buffer, ( Asn1Container ) container );
+        Asn1Decoder.decode( buffer, ( Asn1Container ) container );
     }
 }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
index cd8bd53..46081c2 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
@@ -42,9 +42,6 @@ public class LdapDecoder
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( LdapDecoder.class );
 
-    /** The ASN 1 decoder instance */
-    private Asn1Decoder asn1Decoder;
-
     /** The name of the LdapSession's attribute for the LDAP container used during the decoding */
     public static final String MESSAGE_CONTAINER_ATTR = "LDAP-container";
 
@@ -57,7 +54,6 @@ public class LdapDecoder
      */
     public LdapDecoder()
     {
-        asn1Decoder = new Asn1Decoder();
     }
 
 
@@ -88,7 +84,7 @@ public class LdapDecoder
                     break;
                 }
 
-                asn1Decoder.decode( ByteBuffer.wrap( buf, 0, amount ), container );
+                Asn1Decoder.decode( ByteBuffer.wrap( buf, 0, amount ), container );
             }
         }
         catch ( Exception e )
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
index d97060b..401ef7b 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
@@ -60,8 +60,6 @@ public class LdapControlTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeRequestWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x9C );
         stream.put( new byte[]
             {
@@ -118,7 +116,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check that everything is OK
         AbandonRequest abandonRequest = ldapMessageContainer.getMessage();
@@ -169,7 +167,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
 
         // Don't check the PDU, as control are in a Map, and can be in a different order
         // So we decode the generated PDU, and we compare it with the initial message
-        ldapDecoder.decode( bb, ldapMessageContainer );
+        Asn1Decoder.decode( bb, ldapMessageContainer );
 
         AbandonRequest abandonRequest2 = ldapMessageContainer.getMessage();
 
@@ -183,8 +181,6 @@ public class LdapControlTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeRequestWithEmptyControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
         stream.put( new byte[]
             {
@@ -202,7 +198,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check that everything is OK
         AbandonRequest abandonRequest = ldapMessageContainer.getMessage();
@@ -228,7 +224,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
 
         // Don't check the PDU, as control are in a Map, and can be in a different order
         // So we decode the generated PDU, and we compare it with the initial message
-        ldapDecoder.decode( bb, ldapMessageContainer );
+        Asn1Decoder.decode( bb, ldapMessageContainer );
 
         AbandonRequest abandonRequest2 = ldapMessageContainer.getMessage();
 
@@ -242,8 +238,6 @@ public class LdapControlTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeRequestWithControlsNullOID() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x19 );
         stream.put( new byte[]
             {
@@ -265,7 +259,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -275,8 +269,6 @@ public class LdapControlTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeRequestWithControlsBadOID() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x20 );
         stream.put( new byte[]
             {
@@ -300,7 +292,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -310,8 +302,6 @@ public class LdapControlTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeRequestWithControlsBadCriticality() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x25 );
         stream.put( new byte[]
             {
@@ -334,6 +324,6 @@ public class LdapControlTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
index b89410c..c41c8aa 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
@@ -62,17 +62,6 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
 @Concurrency()
 public class LdapDecoderTest extends AbstractCodecServiceTest
 {
-    /** The ASN 1 decoder instance */
-    private static Asn1Decoder asn1Decoder;
-
-
-    @BeforeClass
-    public static void init()
-    {
-        asn1Decoder = new Asn1Decoder();
-    }
-
-
     /**
      * Decode an incoming buffer into LDAP messages. The result can be 0, 1 or many
      * LDAP messages, which will be stored into the array the caller has created.
@@ -93,7 +82,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         {
             try
             {
-                asn1Decoder.decode( buffer, messageContainer );
+                Asn1Decoder.decode( buffer, messageContainer );
 
                 if ( messageContainer.getState() == TLVStateEnum.PDU_DECODED )
                 {
@@ -133,7 +122,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeFull() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
@@ -157,7 +145,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         assertEquals( TLVStateEnum.PDU_DECODED, container.getState() );
 
@@ -254,8 +242,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test
     public void testDecodePartial() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 16 );
         stream.put( new byte[]
             {
@@ -274,7 +260,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         assertEquals( TLVStateEnum.VALUE_STATE_PENDING, container.getState() );
 
@@ -295,8 +281,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSplittedPDU() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 16 );
         stream.put( new byte[]
             { 
@@ -315,7 +299,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU first block of data
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         assertEquals( TLVStateEnum.VALUE_STATE_PENDING, container.getState() );
 
@@ -337,7 +321,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Decode a BindRequest PDU second block of data
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         assertEquals( container.getState(), TLVStateEnum.PDU_DECODED );
 
@@ -385,9 +369,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBadLengthTooSmall() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
             {
@@ -415,7 +396,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -426,9 +407,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBadPrimitiveLengthTooBig() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
             {
@@ -454,7 +432,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -464,9 +442,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBadTagTransition() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
             {
@@ -491,7 +466,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -504,9 +479,6 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSplittedLength() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 3 );
         stream.put( new byte[]
             {
@@ -519,7 +491,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU first block of data
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         assertEquals( TLVStateEnum.LENGTH_STATE_PENDING, container.getState() );
 
@@ -533,7 +505,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Decode a BindRequest PDU second block of data
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         assertEquals( TLVStateEnum.TAG_STATE_START, container.getState() );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
index d010747..95155f4 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
@@ -59,9 +59,6 @@ public class LdapMessageTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeMessageLengthNull() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x02 );
         stream.put( new byte[]
             {
@@ -74,7 +71,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -84,9 +81,6 @@ public class LdapMessageTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeMessageIdLengthNull() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x04 );
         stream.put( new byte[]
             {
@@ -100,7 +94,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -110,9 +104,6 @@ public class LdapMessageTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeMessageIdMinusOne() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x05 );
         stream.put( new byte[]
             {
@@ -126,7 +117,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -136,9 +127,6 @@ public class LdapMessageTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeMessageIdMaxInt() throws DecoderException
     {
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x08 );
         stream.put( new byte[]
             {
@@ -153,7 +141,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -169,9 +157,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
                   0x02, 0x01, 0x01,                 // messageID MessageID = 1
                   0x42, 0x00                        // ProtocolOp
             };
-
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
+        
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         for ( int i = 0; i < 256; i++ )
@@ -186,7 +172,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
             // Decode a BindRequest PDU
             try
             {
-                ldapDecoder.decode( stream, ldapMessageContainer );
+                Asn1Decoder.decode( stream, ldapMessageContainer );
             }
             catch ( DecoderException de )
             {
@@ -247,8 +233,6 @@ public class LdapMessageTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeUnBindRequestNoControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x08 );
         stream.put( new byte[]
             {
@@ -263,7 +247,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
  
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         Message unbindRequest = ldapMessageContainer.getMessage();
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
index 064dd6e..bdd7c92 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
@@ -63,8 +63,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResultCode() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
 
         stream.put( new byte[]
@@ -81,7 +79,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -91,8 +89,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResultCodeAbove90() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
 
         stream.put( new byte[]
@@ -109,7 +105,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -119,8 +115,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseEmptyResultCodesOK() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         byte[] buffer = new byte[]
@@ -143,7 +137,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
             LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
             // Decode a AddResponse PDU
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
 
             stream.clear();
         }
@@ -158,8 +152,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResultCodeNoMatchedDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
 
         stream.put( new byte[]
@@ -176,7 +168,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -186,8 +178,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResultCodeNoErrorMsg() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0C );
 
         stream.put( new byte[]
@@ -205,7 +195,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -215,8 +205,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseEmptyResultCodeOK() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -235,7 +223,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded AddResponse
         AddResponse addResponse = container.getMessage();
@@ -263,8 +251,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseEmptyResultCodeOKReferral() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1A );
 
         stream.put( new byte[]
@@ -286,7 +272,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded AddResponse
         AddResponse addResponse = container.getMessage();
@@ -326,8 +312,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseEmptyResultCodeOKReferrals() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x24 );
 
         stream.put( new byte[]
@@ -351,7 +335,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded AddResponse
         AddResponse addResponse = container.getMessage();
@@ -398,8 +382,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseEmptyResultCodeEmptyReferral() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1C );
 
         stream.put( new byte[]
@@ -422,7 +404,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded AddResponse
         AddResponse addResponse = container.getMessage();
@@ -474,8 +456,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResultCodeEmptyReferrals() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
 
         stream.put( new byte[]
@@ -495,6 +475,6 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
index 2e24ec2..adfcd45 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
@@ -64,8 +64,6 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAbandonRequestWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x9C );
         stream.put( new byte[]
             {
@@ -121,7 +119,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check that everything is OK
         AbandonRequest abandonRequest = container.getMessage();
@@ -172,7 +170,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<> ( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( buffer.getBytes(), ldapMessageContainer2 );
+        Asn1Decoder.decode( buffer.getBytes(), ldapMessageContainer2 );
 
         // Check that everything is OK
         AbandonRequest abandonRequest3 = container.getMessage();
@@ -187,8 +185,6 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAbandonRequestNoControlsHighMessageId() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
         stream.put( new byte[]
             {
@@ -205,7 +201,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check that everything is OK
         AbandonRequest abandonRequest = container.getMessage();
@@ -232,8 +228,6 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAbandonRequestNoMessageId() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
         stream.put( new byte[]
             {
@@ -249,7 +243,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AbandonRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -259,8 +253,6 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAbandonRequestBadMessageId() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0B );
         stream.put( new byte[]
             {
@@ -276,6 +268,6 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
index 4de9d15..f47aa97 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
@@ -73,8 +73,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddRequestSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x59 );
 
         stream.put( new byte[]
@@ -115,7 +113,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         AddRequest addRequest = container.getMessage();
 
@@ -189,7 +187,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNullBody() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
@@ -206,7 +203,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -216,8 +213,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNullEntry() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x39 );
 
         stream.put( new byte[]
@@ -255,7 +250,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         // Decode a AddRequest message
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -276,8 +271,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestbadDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x59 );
 
         stream.put( new byte[]
@@ -318,7 +311,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         // Decode a AddRequest message
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -339,8 +332,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNullAttributes() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
 
         stream.put( new byte[]
@@ -363,7 +354,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -373,8 +364,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNullAttributeList() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
 
         stream.put( new byte[]
@@ -398,7 +387,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -408,8 +397,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNullType() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2F );
 
         stream.put( new byte[]
@@ -436,7 +423,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         // Decode a AddRequest message
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -457,8 +444,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNoVals() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x30 );
 
         stream.put( new byte[]
@@ -484,7 +469,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -494,8 +479,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddRequestNullVals() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
 
         stream.put( new byte[]
@@ -522,7 +505,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -532,8 +515,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddRequestEmptyAttributeValue() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x34 );
 
         stream.put( new byte[]
@@ -561,7 +542,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         AddRequest addRequest = container.getMessage();
 
@@ -602,8 +583,6 @@ public class AddRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddRequestEmptyAttributeValueWithControl() throws  DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x51 );
 
         stream.put( new byte[]
@@ -637,7 +616,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         AddRequest addRequest = container.getMessage();
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
index dcee35b..7331bf7 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
@@ -58,8 +58,6 @@ public class AddResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -84,7 +82,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded AddResponse
         AddResponse addResponse = container.getMessage();
@@ -109,8 +107,6 @@ public class AddResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResult() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -126,7 +122,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -136,8 +132,6 @@ public class AddResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeAddResponseSuccessWithControl() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
 
         stream.put( new byte[]
@@ -171,7 +165,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded AddResponse
         AddResponse addResponse = container.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
index ee91f25..35dab88 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
@@ -68,7 +68,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestSimpleNoControlsPerf()
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
+        Asn1Decoder Asn1Decoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x52 );
         stream.put( new byte[]
@@ -104,14 +104,14 @@ public class BindRequestTest extends AbstractCodecServiceTest
             long t0 = System.currentTimeMillis();
             for ( int i = 0; i < 10000; i++ )
             {
-                ldapDecoder.decode( stream, container );
+                Asn1Decoder.decode( stream, container );
                 container).clean();
                 stream.flip();
             }
             long t1 = System.currentTimeMillis();
             System.out.println( "Delta = " + ( t1 - t0 ) );
 
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -166,8 +166,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestSimpleWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
             {
@@ -191,7 +189,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -218,8 +216,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestBadDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
             {
@@ -245,7 +241,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         // Decode the BindRequest PDU
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
 
             BindRequest bindRequest = container.getMessage();
             assertNull( bindRequest.getDn() );
@@ -271,8 +267,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestSimpleNoName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x15 );
         stream.put( new byte[]
             {
@@ -293,7 +287,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         Asn1Container container = new LdapMessageContainer<BindRequest>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -304,8 +298,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestSimpleEmptyName() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x16 );
         stream.put( new byte[]
             {
@@ -327,7 +319,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -354,8 +346,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestSaslNoCredsNoControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3A );
         stream.put( new byte[]
             {
@@ -383,7 +373,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -410,8 +400,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestSaslCredsNoControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x42 );
         stream.put( new byte[]
             {
@@ -445,7 +433,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -473,8 +461,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestSaslNoNameCredsNoControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x23 );
         stream.put( new byte[]
             {
@@ -506,7 +492,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -533,8 +519,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestEmptyBody() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
         stream.put( new byte[]
             {
@@ -549,7 +533,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -559,8 +543,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestEmptyVersion() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
         stream.put( new byte[]
             {
@@ -576,7 +558,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -586,8 +568,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected= DecoderException.class )
     public void testDecodeBindRequestBadVersion0() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
         stream.put( new byte[]
             {
@@ -603,7 +583,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -613,8 +593,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestBadVersion4() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
         stream.put( new byte[]
             {
@@ -630,7 +608,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -640,8 +618,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestBadVersion128() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0C );
         stream.put( new byte[]
             {
@@ -657,7 +633,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -667,8 +643,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestNoName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
         stream.put( new byte[]
             {
@@ -684,7 +658,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -694,8 +668,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestEmptyName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0C );
         stream.put( new byte[]
             {
@@ -712,7 +684,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -722,8 +694,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestEmptySimple() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
         stream.put( new byte[]
             {
@@ -741,7 +711,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -767,8 +737,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeBindRequestEmptySasl() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
         stream.put( new byte[]
             {
@@ -788,7 +756,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         // Decode a BindRequest message
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -811,8 +779,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestEmptyMechanism() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
         stream.put( new byte[]
             {
@@ -831,7 +797,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -857,8 +823,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestBadMechanism()
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x11 );
         stream.put( new byte[]
             {
@@ -879,7 +843,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         // Decode the BindRequest PDU
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -900,8 +864,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestEmptyCredentials() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x12 );
         stream.put( new byte[]
             {
@@ -921,7 +883,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -960,8 +922,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestEmptyCredentialsWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2F );
         stream.put( new byte[]
             {
@@ -986,7 +946,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
@@ -1036,8 +996,6 @@ public class BindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindRequestEmptyMechanismWithControls() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
         stream.put( new byte[]
             {
@@ -1061,7 +1019,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindRequest
         BindRequest bindRequest = container.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
index 695213b..ed61753 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
@@ -60,8 +60,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -86,7 +84,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindResponse
         BindResponse bindResponse = container.getMessage();
@@ -111,8 +109,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindResponseWithControlSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3C );
 
         stream.put( new byte[]
@@ -149,7 +145,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindResponse
         BindResponse bindResponse = container.getMessage();
@@ -188,8 +184,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindResponseServerSASLEmptyCredentials() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
 
         stream.put( new byte[]
@@ -215,7 +209,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindResponse
         BindResponse bindResponse = container.getMessage();
@@ -242,8 +236,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindResponseServerSASLEmptyCredentialsWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x34 );
 
         stream.put( new byte[]
@@ -278,7 +270,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindResponse
         BindResponse bindResponse = container.getMessage();
@@ -313,8 +305,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeBindResponseServerSASL() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x12 );
 
         stream.put( new byte[]
@@ -342,7 +332,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the BindResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded BindResponse
         BindResponse bindResponse = container.getMessage();
@@ -368,8 +358,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeAddResponseEmptyResult()throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -385,6 +373,6 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
index c499413..9721f24 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
@@ -64,8 +64,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeCompareRequestSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x38 );
 
         stream.put( new byte[]
@@ -92,7 +90,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded CompareRequest PDU
         CompareRequest compareRequest = container.getMessage();
@@ -117,8 +115,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeCompareRequestEmptyRequest() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -135,7 +131,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -145,8 +141,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeCompareRequestEmptyEntry() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x18 );
 
         stream.put( new byte[]
@@ -170,7 +164,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -180,8 +174,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeCompareRequestEmptyAVA() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
 
         stream.put( new byte[]
@@ -204,7 +196,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -214,8 +206,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeCompareRequestInvalidDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
 
         stream.put( new byte[]
@@ -240,7 +230,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         // Decode the CompareRequest PDU
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
             fail( "We should never reach this point !!!" );
         }
         catch ( DecoderException de )
@@ -262,8 +252,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeCompareRequestEmptyAttributeDesc() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
 
         stream.put( new byte[]
@@ -289,7 +277,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         // Decode the CompareRequest PDU
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
             fail( "We should never reach this point !!!" );
         }
         catch ( DecoderException de )
@@ -311,8 +299,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeCompareRequestEmptyAttributeValue() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x33 );
 
         stream.put( new byte[]
@@ -338,7 +324,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded CompareRequest PDU
         CompareRequest compareRequest = container.getMessage();
@@ -363,8 +349,6 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeCompareRequestWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x55 );
 
         stream.put( new byte[]
@@ -396,7 +380,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded CompareRequest PDU
         CompareRequest compareRequest = container.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
index 38c67cb..a72cafb 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
@@ -60,8 +60,6 @@ public class CompareResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeCompareResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -87,7 +85,7 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded CompareResponse PDU
         CompareResponse compareResponse = container.getMessage();
@@ -112,8 +110,6 @@ public class CompareResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeCompareResponseSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
 
         stream.put( new byte[]
@@ -147,7 +143,7 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded CompareResponse PDU
         CompareResponse compareResponse = container.getMessage();
@@ -181,8 +177,6 @@ public class CompareResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeCompareResponseEmptyResult() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -199,6 +193,6 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a CompareResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
index 8ed3ad9..e5d2da1 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
@@ -63,8 +63,6 @@ public class DelRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeDelRequestSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x27 );
 
         stream.put( new byte[]
@@ -84,7 +82,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded DelRequest PDU
         DeleteRequest delRequest = container.getMessage();
@@ -107,8 +105,6 @@ public class DelRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeDelRequestBadDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x27 );
 
         stream.put( new byte[]
@@ -130,7 +126,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         // Decode a DelRequest PDU
         try
         {
-            ldapDecoder.decode( stream, container );
+            Asn1Decoder.decode( stream, container );
         }
         catch ( DecoderException de )
         {
@@ -151,8 +147,6 @@ public class DelRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeDelRequestEmpty() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -170,7 +164,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -180,8 +174,6 @@ public class DelRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeDelRequestSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x44 );
 
         stream.put( new byte[]
@@ -206,7 +198,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded DelRequest PDU
         DeleteRequest delRequest = container.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
index 3582a9f..22d2594 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
@@ -60,8 +60,6 @@ public class DelResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeDelResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
 
         stream.put( new byte[]
@@ -89,7 +87,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the DelResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded DelResponse PDU
         DeleteResponse delResponse = container.getMessage();
@@ -114,8 +112,6 @@ public class DelResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeDelResponseEmptyResult() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -131,7 +127,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelResponse message
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -141,8 +137,6 @@ public class DelResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeDelResponseSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x51 );
 
         stream.put( new byte[]
@@ -178,7 +172,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the DelResponse PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded DelResponse PDU
         DeleteResponse delResponse = container.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
index 14f9566..b412ad2 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
@@ -60,8 +60,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseSuccess() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1D );
 
         stream.put( new byte[]
@@ -85,7 +83,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
@@ -109,8 +107,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseWithControls() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x44 );
 
         stream.put( new byte[]
@@ -144,7 +140,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
@@ -181,8 +177,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseNoValueWithControls() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3D );
 
         stream.put( new byte[]
@@ -215,7 +209,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
@@ -251,8 +245,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeIntermediateResponseEmpty() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -270,7 +262,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -280,8 +272,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeEmptyOID() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
 
         stream.put( new byte[]
@@ -300,7 +290,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -310,8 +300,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeExtendedBadRequestName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x16 );
 
         stream.put( new byte[]
@@ -332,7 +320,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -342,8 +330,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseName() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x16 );
 
         stream.put( new byte[]
@@ -376,7 +362,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
@@ -399,8 +385,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseEmptyValue() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x18 );
 
         stream.put( new byte[]
@@ -424,7 +408,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
@@ -459,8 +443,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseNoName() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -481,7 +463,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
@@ -505,8 +487,6 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeIntermediateResponseNoValue() throws EncoderException, DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x16 );
 
         stream.put( new byte[]
@@ -528,7 +508,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode the IntermediateResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded IntermediateResponse PDU
         IntermediateResponse intermediateResponse = ldapMessageContainer.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
index 69e80c0..6c4e8e3 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
@@ -70,8 +70,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequest2AttrsSuccess()
         throws LdapException, DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x54 );
 
         stream.put( new byte[]
@@ -118,7 +116,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
@@ -161,8 +159,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestBadDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x54 );
 
         stream.put( new byte[]
@@ -212,7 +208,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         // Decode a ModifyRequest PDU
         try
         {
-            ldapDecoder.decode( stream, ldapMessageContainer );
+            Asn1Decoder.decode( stream, ldapMessageContainer );
         }
         catch ( DecoderException de )
         {
@@ -234,8 +230,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequestManyOperations()
         throws LdapException, DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x8C );
 
         stream.put( new byte[]
@@ -277,7 +271,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
@@ -321,8 +315,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequestManyOperations2()
         throws LdapException, DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0xB9 );
 
         stream.put( new byte[]
@@ -370,7 +362,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
@@ -423,8 +415,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequest2Attrs3valsSuccess()
         throws LdapException, DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x5C );
 
         stream.put( new byte[]
@@ -473,7 +463,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
@@ -518,8 +508,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestEmptyBody() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -535,7 +523,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -545,8 +533,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestEmptyObject() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
 
         stream.put( new byte[]
@@ -563,7 +549,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -573,8 +559,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestObjectAlone() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x29 );
 
         stream.put( new byte[]
@@ -594,7 +578,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -604,8 +588,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestEmptyModification() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
 
         stream.put( new byte[]
@@ -626,7 +608,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -636,8 +618,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestEmptyOperation() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
 
         stream.put( new byte[]
@@ -659,7 +639,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -669,8 +649,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestWrongOperationEmpty() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2F );
 
         stream.put( new byte[]
@@ -693,7 +671,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -703,8 +681,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestWrongOperation() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x30 );
 
         stream.put( new byte[]
@@ -727,7 +703,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -738,8 +714,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestAddOperationEnd() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x30 );
 
         stream.put( new byte[]
@@ -762,7 +736,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -773,8 +747,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestAddOperationEmptyModification() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
 
         stream.put( new byte[]
@@ -798,7 +770,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -809,8 +781,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestAddOperationModificationEmptyType() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x34 );
 
         stream.put( new byte[]
@@ -837,7 +807,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         // Decode a ModifyRequest PDU
         try
         {
-            ldapDecoder.decode( stream, ldapMessageContainer );
+            Asn1Decoder.decode( stream, ldapMessageContainer );
             fail( "We should never reach this point !!!" );
         }
         catch ( DecoderException de )
@@ -860,8 +830,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyRequestAddOperationModificationTypeNoVals() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
 
         stream.put( new byte[]
@@ -887,7 +855,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -899,8 +867,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequestAddOperationModificationTypeEmptyVals()
         throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x37 );
 
         stream.put( new byte[]
@@ -927,7 +893,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
@@ -962,8 +928,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequestAddOperationModificationTypeEmptyValsWithControls()
         throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x54 );
 
         stream.put( new byte[]
@@ -995,7 +959,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
@@ -1039,8 +1003,6 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     public void testDecodeModifyRequestAddOperationModificationType2Vals()
         throws LdapException, DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3D );
 
         stream.put( new byte[]
@@ -1071,7 +1033,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded PDU
         ModifyRequest modifyRequest = ldapMessageContainer.getMessage();
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
index b7fec69..35ac93a 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
@@ -60,8 +60,6 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -86,7 +84,7 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded ModifyResponse PDU
         ModifyResponse modifyResponse = ldapMessageContainer.getMessage();
@@ -111,8 +109,6 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyResponseSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
 
         stream.put( new byte[]
@@ -146,7 +142,7 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded ModifyResponse PDU
         ModifyResponse modifyResponse = ldapMessageContainer.getMessage();
@@ -180,8 +176,6 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyResponseEmptyResult() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -197,6 +191,6 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
index f309254..1cf9134 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
@@ -63,8 +63,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyDNRequestSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
 
         stream.put( new byte[]
@@ -90,7 +88,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         ModifyDnRequest modifyDnRequest = ldapMessageContainer.getMessage();
 
@@ -115,8 +113,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestBadDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
 
         stream.put( new byte[]
@@ -144,7 +140,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
 
         try
         {
-            ldapDecoder.decode( stream, ldapMessageContainer );
+            Asn1Decoder.decode( stream, ldapMessageContainer );
         }
         catch ( DecoderException de )
         {
@@ -165,8 +161,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestBadRDN() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
 
         stream.put( new byte[]
@@ -194,7 +188,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
 
         try
         {
-            ldapDecoder.decode( stream, ldapMessageContainer );
+            Asn1Decoder.decode( stream, ldapMessageContainer );
         }
         catch ( DecoderException de )
         {
@@ -215,8 +209,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestBadNewSuperior() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
 
         stream.put( new byte[]
@@ -244,7 +236,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
 
         try
         {
-            ldapDecoder.decode( stream, ldapMessageContainer );
+            Asn1Decoder.decode( stream, ldapMessageContainer );
         }
         catch ( DecoderException de )
         {
@@ -265,8 +257,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyDNRequestSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x65 );
 
         stream.put( new byte[]
@@ -297,7 +287,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         ModifyDnRequest modifyDnRequest = ldapMessageContainer.getMessage();
 
@@ -331,8 +321,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyDNRequestWithoutSuperior() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3D );
 
         stream.put( new byte[]
@@ -357,7 +345,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         ModifyDnRequest modifyDnRequest = ldapMessageContainer.getMessage();
 
@@ -381,8 +369,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyDNRequestWithoutSuperiorWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x5A );
 
         stream.put( new byte[]
@@ -413,7 +399,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         ModifyDnRequest modifyDnRequest = ldapMessageContainer.getMessage();
 
@@ -450,8 +436,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestEmptyBody() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -468,7 +452,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -478,8 +462,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestEmptyEntry() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
 
         stream.put( new byte[]
@@ -497,7 +479,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -507,8 +489,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestEmptyNewRdn() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
 
         stream.put( new byte[]
@@ -530,7 +510,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -540,8 +520,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNRequestEmptyDeleteOldRdnn() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3C );
 
         stream.put( new byte[]
@@ -565,6 +543,6 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
index a212447..c70cb19 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
@@ -60,8 +60,6 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -86,7 +84,7 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the ModifyDNResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded ModifyDNResponse PDU
         ModifyDnResponse modifyDnResponse = ldapMessageContainer.getMessage();
@@ -111,8 +109,6 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeModifyResponseSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
 
         stream.put( new byte[]
@@ -146,7 +142,7 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the ModifyDNResponse PDU
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         // Check the decoded ModifyDNResponse PDU
         ModifyDnResponse modifyDnResponse = ldapMessageContainer.getMessage();
@@ -180,8 +176,6 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeModifyDNResponseEmptyResult() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -197,6 +191,6 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNResponse message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
index a5f2440..4a9990d 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
@@ -103,7 +103,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
     @Test
     public void testDecodeSearchRequestExtensibleMatch() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x63 );
         stream.put( new byte[]
@@ -151,7 +150,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -204,8 +203,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                     0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -215,7 +212,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
 
         // Decode a SearchRequest message
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -245,8 +242,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -255,7 +250,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -285,8 +280,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -295,7 +288,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -326,8 +319,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                     0x30, 0x00                  // AttributeDescriptionList ::= SEQUENCE OF AttributeDescription
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -336,7 +327,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -399,8 +390,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -409,7 +398,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -459,8 +448,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                         'a', 't', 't', 'r', '2',    // AttributeDescription ::= LDAPString
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -469,7 +456,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -500,8 +487,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -510,7 +495,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -541,8 +526,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                     0x04, 0x00
                 };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -551,7 +534,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -582,8 +565,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -592,6 +573,6 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
index 09c486f..ad0a808 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
@@ -105,7 +105,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringInitialAny() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x64 );
         stream.put( new byte[]
@@ -152,7 +151,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -197,7 +196,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestSubstringInitialAnyWithControls()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x0081 );
         stream.put( new byte[]
@@ -249,7 +247,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -302,7 +300,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringAny() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x64 );
         stream.put( new byte[]
@@ -349,7 +346,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -395,7 +392,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringAnyFinal() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x67 );
         stream.put( new byte[]
@@ -444,7 +440,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -491,7 +487,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestSubstringInitialAnyFinal()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x6A );
         stream.put( new byte[]
@@ -542,7 +537,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -589,7 +584,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestSubstringInitialAnyAnyFinal()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x67 );
         stream.put( new byte[]
@@ -638,7 +632,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -683,7 +677,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringAnyAnyFinal() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x6A );
         stream.put( new byte[]
@@ -734,7 +727,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -782,7 +775,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringInitialAnyAny() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x67 );
         stream.put( new byte[]
@@ -831,7 +823,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -876,7 +868,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringAnyAnyAny() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x6A );
         stream.put( new byte[]
@@ -927,7 +918,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -975,7 +966,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestSubstringFinal() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x67 );
         stream.put( new byte[]
@@ -1022,7 +1012,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchRequest searchRequest = ldapMessageContainer.getMessage();
 
@@ -1092,8 +1082,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1102,7 +1090,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1139,8 +1127,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1149,7 +1135,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1187,8 +1173,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1197,7 +1181,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1236,8 +1220,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1246,7 +1228,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1286,8 +1268,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1296,7 +1276,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1336,8 +1316,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1346,7 +1324,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1386,8 +1364,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1396,7 +1372,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1439,8 +1415,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1449,7 +1423,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1492,8 +1466,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1502,7 +1474,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1545,8 +1517,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1555,7 +1525,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1597,8 +1567,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1607,7 +1575,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1649,8 +1617,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1659,6 +1625,6 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
index e3f569f..56070d6 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
@@ -119,7 +119,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestGlobalNoControls() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x90 );
         stream.put( new byte[]
@@ -188,7 +187,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -267,7 +266,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestCompareFiltersNoControls()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x90 );
         stream.put( new byte[]
@@ -331,7 +329,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -410,7 +408,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestPresentNoControls() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x7B );
         stream.put( new byte[]
@@ -471,7 +468,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -548,7 +545,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestNoAttributes() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x40 );
         stream.put( new byte[]
@@ -588,7 +584,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -659,7 +655,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestOneEmptyAttribute()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x3F );
         stream.put( new byte[]
@@ -702,7 +697,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -775,7 +770,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestWithStarAndAttr() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x40 );
         stream.put( new byte[]
@@ -818,7 +812,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -871,7 +865,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestOrFilters() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x96 );
         stream.put( new byte[]
@@ -927,7 +920,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -1065,8 +1058,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                               0x47, 0x00, 0x00, 0x00, // value: pageSize=2
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         // For Java6
         ByteBuffer streamJava6 = ByteBuffer.allocate( asn1BERJava6.length );
         streamJava6.put( asn1BERJava6 );
@@ -1079,7 +1070,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( streamJava6, ldapMessageContainer );
+        Asn1Decoder.decode( streamJava6, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -1129,7 +1120,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestGlobalNoControlsOidAndAlias()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0xA1 );
         stream.put( new byte[]
@@ -1210,7 +1200,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -1313,8 +1303,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                         0x01, 0x01, ( byte ) 0xFF // SubEntry visibility
         };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1322,7 +1310,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -1374,8 +1362,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                   0x63, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1385,7 +1371,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1403,8 +1389,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1414,7 +1398,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1425,7 +1409,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestEmptyBaseDnNoControls() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x6F );
         stream.put( new byte[]
@@ -1494,7 +1477,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -1571,7 +1554,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchRequestGlobalBadObjectBase() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x90 );
         stream.put( new byte[]
@@ -1644,7 +1626,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
 
         try
         {
-            ldapDecoder.decode( stream, ldapMessageContainer );
+            Asn1Decoder.decode( stream, ldapMessageContainer );
         }
         catch ( DecoderException de )
         {
@@ -1676,8 +1658,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x0A, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1687,7 +1667,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1697,7 +1677,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchRequestGlobalBadScope() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x90 );
         stream.put( new byte[]
@@ -1763,7 +1742,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1785,8 +1764,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x0A, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1796,7 +1773,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1806,7 +1783,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchRequestGlobalBadDerefAlias() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x90 );
         stream.put( new byte[]
@@ -1872,7 +1848,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1895,8 +1871,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x02, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -1906,7 +1880,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -1916,7 +1890,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchRequestGlobalBadSizeLimit() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x8F );
         stream.put( new byte[]
@@ -1981,7 +1954,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2005,8 +1978,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x02, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2016,7 +1987,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2026,7 +1997,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchRequestGlobalBadTimeLimit() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x8F );
         stream.put( new byte[]
@@ -2096,7 +2066,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2121,8 +2091,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x01, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2132,7 +2100,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2158,8 +2126,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     ( byte ) 0xA0, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2169,7 +2135,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2195,8 +2161,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     ( byte ) 0x87, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2206,7 +2170,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2232,8 +2196,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     ( byte ) 0xA3, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2243,7 +2205,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2269,8 +2231,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     ( byte ) 0xA5, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2280,7 +2240,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2306,8 +2266,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     ( byte ) 0xA6, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2317,7 +2275,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2343,8 +2301,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     ( byte ) 0xA8, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2354,7 +2310,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2383,8 +2339,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2394,7 +2348,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2426,8 +2380,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x30, 0x00                  // AttributeDescriptionList ::= SEQUENCE OF AttributeDescription
         };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2437,7 +2389,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -2502,8 +2454,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x04, 0x01, '*'
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2513,7 +2463,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -2577,8 +2527,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2588,7 +2536,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -2640,8 +2588,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2651,7 +2597,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2679,8 +2625,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2690,7 +2634,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2718,8 +2662,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                       0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2729,7 +2671,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2760,8 +2702,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                   0x04, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2771,7 +2711,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -2810,8 +2750,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
                     0x30, 0x00
             };
 
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( asn1BER.length );
         stream.put( asn1BER );
         stream.flip();
@@ -2821,7 +2759,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -2874,7 +2812,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x25 );
         stream.put( new byte[]
@@ -2916,7 +2853,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -2957,7 +2894,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAndEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x27 );
         stream.put( new byte[]
@@ -3000,7 +2936,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3049,7 +2985,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAndEqEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x2F );
         stream.put( new byte[]
@@ -3099,7 +3034,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3155,7 +3090,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAndAndEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x29 );
         stream.put( new byte[]
@@ -3197,7 +3131,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3253,7 +3187,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAndAndEqEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x31 );
         stream.put( new byte[]
@@ -3303,7 +3236,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3367,7 +3300,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAnd_AndEq_Eq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x31 );
         stream.put( new byte[]
@@ -3416,7 +3348,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3479,7 +3411,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAnd_AndEqEq_Eq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x39 );
         stream.put( new byte[]
@@ -3534,7 +3465,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3604,7 +3535,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAndEq_OrEqEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x39 );
         stream.put( new byte[]
@@ -3659,7 +3589,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3730,7 +3660,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     public void testDecodeSearchRequestAnd_AndEq_AndEq()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x33 );
         stream.put( new byte[]
@@ -3780,7 +3709,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3850,7 +3779,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAnd_AndEqEq_AndEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x3B );
         stream.put( new byte[]
@@ -3906,7 +3834,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -3983,7 +3911,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestAnd_OrPrPr_NotGEq() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x3B );
         stream.put( new byte[]
@@ -4030,7 +3957,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -4102,7 +4029,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestRootDse() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x33 );
         stream.put( new byte[]
@@ -4127,7 +4053,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -4159,7 +4085,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestDIRSERVER_810() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x6B );
         stream.put( new byte[]
@@ -4195,7 +4120,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -4243,7 +4168,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchRequestComplexFilterWithControl() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x77 );
         stream.put( new byte[]
@@ -4290,7 +4214,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
@@ -4348,8 +4272,6 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     @Test
     public void decodeComplexFilter() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x77 );
         stream.put( new byte[]
             {
@@ -4381,7 +4303,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         assertEquals( TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState() );
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
index ef2dc86..b0e49ce 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
@@ -61,7 +61,6 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultDoneSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
@@ -86,7 +85,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         // Allocate a SearchResultDone Container
         LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultDone searchResultDone = ldapMessageContainer.getMessage();
 
@@ -110,7 +109,6 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultDoneSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x3C );
 
@@ -146,7 +144,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultDone searchResultDone = ldapMessageContainer.getMessage();
 
@@ -184,7 +182,6 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultDoneEmptyResult() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
@@ -201,7 +198,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchResultDone message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -211,7 +208,6 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultDoneEsyncRefresh() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
 
         ByteBuffer stream = ByteBuffer.allocate( 0x0F );
 
@@ -236,7 +232,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         // Allocate a SearchResultDone Container
         LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultDone searchResultDone = ldapMessageContainer.getMessage();
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
index f4910df..24d92bd 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
@@ -64,8 +64,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntrySuccess() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x50 );
 
         stream.put( new byte[]
@@ -98,7 +96,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -134,8 +132,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntry2AttrsSuccess() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x7b );
 
         stream.put( new byte[]
@@ -176,7 +172,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -212,7 +208,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer2 =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( result, ldapMessageContainer2 );
+        Asn1Decoder.decode( result, ldapMessageContainer2 );
 
         assertEquals( searchResultEntry.getEntry(), ldapMessageContainer2.getMessage().getEntry() );
         assertEquals( searchResultEntry.getObjectName(), ldapMessageContainer2.getMessage().getObjectName() );
@@ -226,8 +222,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntrySuccessWithFollowingMessage() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x66 );
 
         stream.put( new byte[]
@@ -267,7 +261,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -307,7 +301,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer2 =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( buffer.getBytes(), ldapMessageContainer2 );
+        Asn1Decoder.decode( buffer.getBytes(), ldapMessageContainer2 );
 
         assertEquals( searchResultEntry.getEntry(), ldapMessageContainer2.getMessage().getEntry() );
         assertEquals( searchResultEntry.getObjectName(), ldapMessageContainer2.getMessage().getObjectName() );
@@ -322,8 +316,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryEmpty() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -341,7 +333,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -351,8 +343,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryEmptyObjectName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
 
         stream.put( new byte[]
@@ -373,7 +363,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -383,8 +373,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryObjectNameAlone() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x24 );
 
         stream.put( new byte[]
@@ -406,7 +394,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -416,8 +404,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntryEmptyAttributes() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x26 );
 
         stream.put( new byte[]
@@ -442,7 +428,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -468,8 +454,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryEmptyAttributeList() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x28 );
 
         stream.put( new byte[]
@@ -495,7 +479,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -506,8 +490,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryEmptyAttributeListWithControls() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x45 );
 
         stream.put( new byte[]
@@ -538,7 +520,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -548,8 +530,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryEmptyType() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2A );
 
         stream.put( new byte[]
@@ -576,7 +556,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -586,8 +566,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultEntryTypeAlone() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
 
         stream.put( new byte[]
@@ -615,7 +593,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -625,8 +603,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntryEmptyVals() throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x37 );
 
         stream.put( new byte[]
@@ -655,7 +631,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -689,8 +665,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntryEmptyVals2() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
 
         stream.put( new byte[]
@@ -723,7 +697,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -758,8 +732,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntryEmptyValsWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x5B );
 
         stream.put( new byte[]
@@ -797,7 +769,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -842,8 +814,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     public void testDecodeSearchResultEntryEmptyAttributeValue()
         throws DecoderException, EncoderException, LdapException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x39 );
 
         stream.put( new byte[]
@@ -873,7 +843,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
@@ -909,8 +879,6 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultEntryEmptyAttributeValueWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x5D );
 
         stream.put( new byte[]
@@ -949,7 +917,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultEntry searchResultEntry = ldapMessageContainer.getMessage();
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
index 3143eaa..003740a 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
@@ -65,8 +65,6 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultReferenceSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3d8 );
 
         String[] ldapUrls = new String[]
@@ -116,7 +114,7 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultReference> ldapMessageContainer = 
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultReference searchResultReference = ldapMessageContainer.getMessage();
 
@@ -162,8 +160,6 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultReferenceSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3FC );
 
         String[] ldapUrls = new String[]
@@ -233,7 +229,7 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         ldapMessageContainer.clean();
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         stream.flip();
 
@@ -290,8 +286,6 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeSearchResultReferenceNoReference() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -310,7 +304,7 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchResultReference message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 
 
@@ -320,8 +314,6 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeSearchResultReferenceOneReference() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x11 );
 
         stream.put( new byte[]
@@ -340,7 +332,7 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultReference> ldapMessageContainer = 
             new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         SearchResultReference searchResultReference = ldapMessageContainer.getMessage();
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
index 4af8238..8d18b5a 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
@@ -57,8 +57,6 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeUnBindRequestNoControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
         stream.put( new byte[]
             {
@@ -73,7 +71,7 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         UnbindRequest unbindRequest = ldapMessageContainer.getMessage();
 
@@ -94,8 +92,6 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeUnBindRequestWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x24 );
         stream.put( new byte[]
             {
@@ -115,7 +111,7 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         // Allocate a BindRequest Container
         LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
 
         UnbindRequest unbindRequest = ldapMessageContainer.getMessage();
 
@@ -145,8 +141,6 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeUnBindRequestNotNull() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
         stream.put( new byte[]
             {
@@ -162,6 +156,6 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a UnbindRequest message
-        ldapDecoder.decode( stream, ldapMessageContainer );
+        Asn1Decoder.decode( stream, ldapMessageContainer );
     }
 }
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/cancel/CancelFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/cancel/CancelFactory.java
index e646d13..1dd330b 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/cancel/CancelFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/cancel/CancelFactory.java
@@ -97,7 +97,7 @@ public class CancelFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         CancelRequestContainer container = new CancelRequestContainer();
         container.setCancelRequest( ( CancelRequest ) extendedRequest ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/certGeneration/CertGenerationFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/certGeneration/CertGenerationFactory.java
index e60617d..401652e 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/certGeneration/CertGenerationFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/certGeneration/CertGenerationFactory.java
@@ -99,7 +99,7 @@ public class CertGenerationFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         CertGenerationRequestContainer container = new CertGenerationRequestContainer();
         container.setCertGenerationRequest( ( CertGenerationRequest ) extendedRequest ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionFactory.java
index dfe7616..fbf727a 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionFactory.java
@@ -122,7 +122,7 @@ public class EndTransactionFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         EndTransactionRequestContainer container = new EndTransactionRequestContainer();
         container.setEndTransactionRequest( ( EndTransactionRequest ) extendedRequest ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
@@ -135,7 +135,7 @@ public class EndTransactionFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         EndTransactionResponseContainer container = new EndTransactionResponseContainer();
         container.setEndTransactionResponse( ( EndTransactionResponse ) extendedResponse ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionResponseContainer.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionResponseContainer.java
index cb39c17..7fab378 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionResponseContainer.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/endTransaction/EndTransactionResponseContainer.java
@@ -121,12 +121,11 @@ public class EndTransactionResponseContainer extends AbstractContainer
     {
         ByteBuffer bb = ByteBuffer.wrap( controlsBytes );
         ControlsContainer container = new ControlsContainer();
-        Asn1Decoder decoder = new Asn1Decoder();
         
         // Loop on all the contained controls
         while ( bb.hasRemaining() )
         {
-            decoder.decode( bb, container );
+            Asn1Decoder.decode( bb, container );
             container.setState( TLVStateEnum.TAG_STATE_START );
             container.setTransition( ControlsStates.START_STATE );
         }
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulDisconnect/GracefulDisconnectFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulDisconnect/GracefulDisconnectFactory.java
index a71d1ae..b4247b3 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulDisconnect/GracefulDisconnectFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulDisconnect/GracefulDisconnectFactory.java
@@ -99,7 +99,7 @@ public class GracefulDisconnectFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         GracefulDisconnectResponseContainer container = new GracefulDisconnectResponseContainer();
         container.setGracefulDisconnectResponse( ( GracefulDisconnectResponse ) extendedResponse ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
     
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulShutdown/GracefulShutdownFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulShutdown/GracefulShutdownFactory.java
index de10b98..44854c0 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulShutdown/GracefulShutdownFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/gracefulShutdown/GracefulShutdownFactory.java
@@ -111,7 +111,7 @@ public class GracefulShutdownFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         GracefulShutdownRequestContainer container = new GracefulShutdownRequestContainer();
         container.setGracefulShutdownRequest( ( GracefulShutdownRequest ) extendedRequest ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/pwdModify/PasswordModifyFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/pwdModify/PasswordModifyFactory.java
index 15acc70..ab53b7f 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/pwdModify/PasswordModifyFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/pwdModify/PasswordModifyFactory.java
@@ -115,7 +115,7 @@ public class PasswordModifyFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         PasswordModifyRequestContainer container = new PasswordModifyRequestContainer();
         container.setPasswordModifyRequest( ( PasswordModifyRequest ) extendedRequest ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
@@ -166,7 +166,7 @@ public class PasswordModifyFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( responseValue );
         PasswordModifyResponseContainer container = new PasswordModifyResponseContainer();
         container.setPasswordModifyResponse( ( PasswordModifyResponse ) extendedResponse ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
 
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/storedProcedure/StoredProcedureFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/storedProcedure/StoredProcedureFactory.java
index fe889dd..dda6ebd 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/storedProcedure/StoredProcedureFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/extended/ads_impl/storedProcedure/StoredProcedureFactory.java
@@ -100,7 +100,7 @@ public class StoredProcedureFactory extends AbstractExtendedOperationFactory
         ByteBuffer bb = ByteBuffer.wrap( requestValue );
         StoredProcedureRequestContainer container = new StoredProcedureRequestContainer();
         container.setStoredProcedureRequest( ( StoredProcedureRequest ) extendedRequest ); 
-        new Asn1Decoder().decode( bb, container );
+        Asn1Decoder.decode( bb, container );
     }
 
     
diff --git a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/intermediate/syncrepl_impl/SyncInfoValueFactory.java b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/intermediate/syncrepl_impl/SyncInfoValueFactory.java
index 754629c..c49aaf5 100644
--- a/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/intermediate/syncrepl_impl/SyncInfoValueFactory.java
+++ b/ldap/extras/codec/src/main/java/org/apache/directory/api/ldap/extras/intermediate/syncrepl_impl/SyncInfoValueFactory.java
@@ -187,6 +187,6 @@ public class SyncInfoValueFactory implements IntermediateOperationFactory
     {
         ByteBuffer buffer = ByteBuffer.wrap( responseValue );
         SyncInfoValueContainer container = new SyncInfoValueContainer( ( SyncInfoValue ) intermediateResponse );
-        new Asn1Decoder().decode( buffer, ( Asn1Container ) container );
+        Asn1Decoder.decode( buffer, ( Asn1Container ) container );
     }
 }
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java
index fc14fff..ee7e751 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedRequestTest.java
@@ -72,8 +72,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1B );
 
         stream.put( new byte[]
@@ -97,7 +95,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedRequest PDU
         ExtendedRequest extendedRequest = container.getMessage();
@@ -125,8 +123,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x38 );
 
         stream.put( new byte[]
@@ -155,7 +151,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedRequest PDU
         ExtendedRequest extendedRequest = container.getMessage();
@@ -193,8 +189,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestNoValueWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x3C );
 
         stream.put( new byte[]
@@ -221,7 +215,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedRequest PDU
         ExtendedRequest extendedRequest = container.getMessage();
@@ -257,8 +251,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeExtendedRequestEmpty() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -275,7 +267,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -285,8 +277,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeEmptyOID() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
 
         stream.put( new byte[]
@@ -304,7 +294,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -314,8 +304,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeExtendedBadRequestName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1F );
 
         stream.put( new byte[]
@@ -336,7 +324,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -346,8 +334,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestName() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1F );
 
         stream.put( new byte[]
@@ -368,7 +354,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedRequest PDU
         ExtendedRequest extendedRequest = container.getMessage();
@@ -394,8 +380,6 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestEmptyNoValue() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x21 );
 
         stream.put( new byte[]
@@ -418,7 +402,7 @@ public class ExtendedRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedRequest PDU
         ExtendedRequest extendedRequest = container.getMessage();
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java
index 205328c..9256ef0 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/extended/ExtendedResponseTest.java
@@ -72,8 +72,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedResponseSuccess() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x2E );
 
         stream.put( new byte[]
@@ -106,7 +104,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -136,8 +134,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedResponseSuccessWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x4B );
 
         stream.put( new byte[]
@@ -182,7 +178,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -220,8 +216,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestNoName() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
 
         stream.put( new byte[]
@@ -247,7 +241,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -272,8 +266,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedRequestNoNameWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
 
         stream.put( new byte[]
@@ -310,7 +302,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -347,8 +339,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeExtendedResponseEmpty() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
         stream.put( new byte[]
@@ -365,7 +355,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -375,8 +365,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeExtendedResponseEmptyResponseName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
 
         stream.put( new byte[]
@@ -403,7 +391,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -413,8 +401,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test( expected=DecoderException.class )
     public void testDecodeExtendedResponseBadOIDResponseName() throws DecoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x12 );
 
         stream.put( new byte[]
@@ -442,7 +428,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
     }
 
 
@@ -452,8 +438,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedResponseNoResponse() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1D );
 
         stream.put( new byte[]
@@ -481,7 +465,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -507,8 +491,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedResponseNoResponseWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x44 );
 
         stream.put( new byte[]
@@ -547,7 +529,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -585,8 +567,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedResponseEmptyResponse() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x1F );
 
         stream.put( new byte[]
@@ -615,7 +595,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
@@ -660,8 +640,6 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
     @Test
     public void testDecodeExtendedResponseEmptyResponseWithControls() throws DecoderException, EncoderException
     {
-        Asn1Decoder ldapDecoder = new Asn1Decoder();
-
         ByteBuffer stream = ByteBuffer.allocate( 0x46 );
 
         stream.put( new byte[]
@@ -701,7 +679,7 @@ public class ExtendedResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ExtendedResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the ExtendedRequest PDU
-        ldapDecoder.decode( stream, container );
+        Asn1Decoder.decode( stream, container );
 
         // Check the decoded ExtendedResponse PDU
         ExtendedResponse extendedResponse = container.getMessage();
diff --git a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
index a20ee1c..cb41acb 100644
--- a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
+++ b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
@@ -54,16 +54,11 @@ public class LdapProtocolDecoder implements ProtocolDecoder
     /** The logger */
     private static final Logger CODEC_LOG = LoggerFactory.getLogger( Loggers.CODEC_LOG.getName() );
 
-    /** The ASN 1 decoder instance */
-    private Asn1Decoder asn1Decoder;
-
-
     /**
      * Creates a new instance of LdapProtocolEncoder.
      */
     public LdapProtocolDecoder()
     {
-        asn1Decoder = new Asn1Decoder();
     }
 
 
@@ -139,7 +134,7 @@ public class LdapProtocolDecoder implements ProtocolDecoder
                     }
                 }
 
-                asn1Decoder.decode( buffer, messageContainer );
+                Asn1Decoder.decode( buffer, messageContainer );
 
                 if ( messageContainer.getState() == TLVStateEnum.PDU_DECODED )
                 {
diff --git a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolEncoder.java b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolEncoder.java
index 444cb01..73c3703 100644
--- a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolEncoder.java
+++ b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolEncoder.java
@@ -85,7 +85,7 @@ public class LdapProtocolEncoder implements ProtocolEncoder
         }
         catch ( EncoderException e )
         {
-            e.printStackTrace();
+            CODEC_LOG.error( I18n.err( I18n.ERR_14000_ERROR_ENCODING_MESSAGE, message, e.getMessage() ) );
             throw e;
         }