@Override
  protected MessageDrivenBeanMetaData assertFullMDB(
      String ejbName, IEnterpriseBeansMetaData<?, ?, ?, ?> enterpriseBeansMetaData, Mode mode) {
    MessageDrivenBeanMetaData mdb = assertMDB(ejbName + "EjbName", enterpriseBeansMetaData);
    assertId(ejbName, mdb);
    if (mode == Mode.SPEC) {
      assertMappedName(ejbName, mdb.getMappedName());
      assertEquals(ejbName + "MessagingType", mdb.getMessagingType());
      assertNamedMethod(ejbName + "TimeoutMethod", 2, mdb.getTimeoutMethod());
      assertEquals(TransactionManagementType.CONTAINER, mdb.getTransactionType());
      assertEquals(ejbName + "MessageDestinationType", mdb.getMessageDestinationType());
      assertEquals(ejbName + "MessageDestinationLink", mdb.getMessageDestinationLink());
      assertAroundInvokes(ejbName, 2, mdb.getAroundInvokes());
      assertEnvironment(ejbName, mdb.getJndiEnvironmentRefsGroup(), true, mode);
      assertContainerTransactions(ejbName, 6, 6, mdb.getContainerTransactions());
      assertMethodPermissions(
          ejbName, ejbName + "MethodPermission", 3, 3, mdb.getMethodPermissions());
      assertExcludeList(ejbName, 5, 5, mdb.getExcludeList());
      assertSecurityIdentity(ejbName, "SecurityIdentity", mdb.getSecurityIdentity(), true, mode);
    } else {
      assertNull(mdb.getMappedName());
      assertNull(mdb.getMessagingType());
      assertNull(mdb.getTimeoutMethod());
      assertNull(mdb.getTransactionType());
      assertNull(mdb.getMessageDestinationType());
      assertNull(mdb.getMessageDestinationLink());
      assertNull(mdb.getAroundInvokes());
      assertEnvironment(ejbName, mdb.getJndiEnvironmentRefsGroup(), false, mode);
      assertNull(mdb.getContainerTransactions());
      assertNull(mdb.getMethodPermissions());
      assertNull(mdb.getExcludeList());
      assertSecurityIdentity(ejbName, "SecurityIdentity", mdb.getSecurityIdentity(), false, mode);
    }
    assertActivationConfig(ejbName, mdb.getActivationConfig(), mode);

    return mdb;
  }