try
        {
            decoder.decode( buffer, container );
            PwdModifyResponse pwdModifyResponse = container.getPwdModifyResponse();
            // Now, update the created response with what we got from the extendedResponse
            pwdModifyResponse.getLdapResult().setResultCode( response.getLdapResult().getResultCode() );
            pwdModifyResponse.getLdapResult().setDiagnosticMessage( response.getLdapResult().getDiagnosticMessage() );
            pwdModifyResponse.getLdapResult().setMatchedDn( response.getLdapResult().getMatchedDn() );
            pwdModifyResponse.getLdapResult().setReferral( response.getLdapResult().getReferral() );
            return new PasswordModifyResponseDecorator( codec, pwdModifyResponse );
        }
        catch ( DecoderException de )
        {
            StringWriter sw = new StringWriter();
            de.printStackTrace( new PrintWriter( sw ) );
            String stackTrace = sw.toString();
            // Error while decoding the value. 
            PwdModifyResponse pwdModifyResponse = new PwdModifyResponseImpl(
                decoratedResponse.getMessageId(),
                ResultCodeEnum.OPERATIONS_ERROR,
                stackTrace );
            return new PasswordModifyResponseDecorator( codec, pwdModifyResponse );