Encrypt method for MUC create request for only Occupants(online users)

I use smack omemo in my Android Kotlin app, smack version 4.4.8, jdk version 21.

Why encrypt method for MUC create request for only Occupants? Occupants is online users. If user not online it not get message from MAM because sender not create request for it.

Source code →

public synchronized OmemoMessage.Sent encrypt(MultiUserChat muc, String message)
        throws UndecidedOmemoIdentityException, CryptoFailedException,
        XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
        SmackException.NoResponseException, NoOmemoSupportException,
        SmackException.NotLoggedInException, IOException {
    if (!multiUserChatSupportsOmemo(muc)) {
        throw new NoOmemoSupportException();
    }

    Set<BareJid> recipients = new HashSet<>();

    for (EntityFullJid e : muc.getOccupants()) {
        recipients.add(muc.getOccupant(e).getJid().asBareJid());
    }
    return encrypt(recipients, message);
}

I use another encrypt method that require Set recipients which other encrypt method also call it. In this case I need all Affiliation Jids to send parameter.
Why there is not method that return all Affiliations(Members + admins + owners) inside of the group? I get one by one with custom method →

fun getAllAffiliationJids(muc: MultiUserChat): Set<BareJid> {
    val allAffiliates = mutableSetOf<Affiliate>()
    val allAffiliateJids = mutableSetOf<BareJid>()

    try {
        val owners = muc.owners
        allAffiliates.addAll(owners)

        val admins = muc.admins
        allAffiliates.addAll(admins)

        val members = muc.members
        allAffiliates.addAll(members)

        allAffiliates.forEach {
            allAffiliateJids.add(it.jid.asBareJid())
        }

    } catch (e: Exception) {
        e.printStackTrace()
    }

    return allAffiliateJids
}