public void add(Object principal, String realmName) {
        if (realmName == null) {
            throw new NullPointerException("realmName argument cannot be null.");
        }
        if (principal == null) {
            throw new NullPointerException("principal argument cannot be null.");
        }
        this.cachedToString = null;
        getPrincipalsLazy(realmName).add(principal);
    }
Returns the first available principal from any of the {@code Realm} principals, or {@code null} if there are
no principals yet.
<p/>
The 'first available principal' is interpreted as the principal that would be returned by
<code>{@link #iterator() iterator()}.{@link java.util.Iterator#next() next()}.</code>

@inheritDoc
core/src/main/java/org/apache/shiro/subject/SimplePrincipalCollection.java