code: private static void addAfterDeliveryMethod(ClassWriter cw,
                                                 String implClassName)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(tc, INDENT + "adding method : afterDelivery ()V");
  
          // -----------------------------------------------------------------------
          // public void afterDelivery() throws ResourceException
          // {
          // -----------------------------------------------------------------------
          final String desc = "()V";
          MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "afterDelivery", desc, null, new String[] { "javax/resource/ResourceException" });
          GeneratorAdapter mg = new GeneratorAdapter(mv, ACC_PUBLIC, "afterDelivery", desc);
          mg.visitCode();
  
          // -----------------------------------------------------------------------
          //    this.ivMessageEndpointBase.afterDelivery();
          // -----------------------------------------------------------------------
          mg.loadThis();
          mg.visitFieldInsn(GETFIELD, implClassName, MESSAGE_ENDPOINT_BASE_FIELD,
                            MESSAGE_ENDPOINT_BASE_FIELD_TYPE);
          mg.visitMethodInsn(INVOKEVIRTUAL, MESSAGE_ENDPOINT_BASE_STRING,
                             "afterDelivery",
                             desc);
          mg.returnValue();
  
          // -----------------------------------------------------------------------
          // }
          // -----------------------------------------------------------------------
          mg.endMethod();
          mg.visitEnd();
      }
docs: Adds a definition for an afterDelivery() wrapper method that invokes
  MessageEndpointBase.afterDelivery(). It is only needed for no-method
  Interface MDB's. Otherwise, MessageEndpointBase.afterDelivery()
  is inherited.
  
  @param cw ASM ClassWriter to add the method to.
  @param implClassName name of the wrapper class being generated.