private void processDefinitions(Ini ini) {
        if (CollectionUtils.isEmpty(ini)) {
            LOGGER.warn("{} defined, but the ini instance is null or empty.", getClass().getSimpleName());
            return;
        }

        Ini.Section rolesSection = ini.getSection(ROLES_SECTION_NAME);
        if (!CollectionUtils.isEmpty(rolesSection)) {
            LOGGER.debug("Discovered the [{}] section.  Processing...", ROLES_SECTION_NAME);
            processRoleDefinitions(rolesSection);
        }

        Ini.Section usersSection = ini.getSection(USERS_SECTION_NAME);
        if (!CollectionUtils.isEmpty(usersSection)) {
            LOGGER.debug("Discovered the [{}] section.  Processing...", USERS_SECTION_NAME);
            processUserDefinitions(usersSection);
        } else {
            LOGGER.info("{} defined, but there is no [{}] section defined.  This realm will not be populated with any "
                    + "users and it is assumed that they will be populated programatically.  Users must be defined "
                    + "for this Realm instance to be useful.", getClass().getSimpleName(), USERS_SECTION_NAME);
        }
    }
Sets the Ini instance used to configure this realm.  Provided for JavaBeans-style configuration of this
realm, particularly useful in Dependency Injection environments.

@param ini the Ini instance which will be inspected to create accounts, groups and permissions for this realm.
core/src/main/java/org/apache/shiro/realm/text/IniRealm.java