public PrincipalCollection getRememberedPrincipals(SubjectContext subjectContext) {
        PrincipalCollection principals = null;
        byte[] bytes = null;
        try {
            bytes = getRememberedSerializedIdentity(subjectContext);
            //SHIRO-138 - only call convertBytesToPrincipals if bytes exist:
            if (bytes != null && bytes.length > 0) {
                principals = convertBytesToPrincipals(bytes, subjectContext);
            }
        } catch (RuntimeException re) {
            principals = onRememberedPrincipalFailure(re, subjectContext);
        } finally {
            ByteUtils.wipe(bytes);
        }

        return principals;
    }
Implements the interface method by first {@link #getRememberedSerializedIdentity(SubjectContext) acquiring}
the remembered serialized byte array.  Then it {@link #convertBytesToPrincipals(byte[], SubjectContext) converts}
them and returns the re-constituted {@link PrincipalCollection}.  If no remembered principals could be
obtained, {@code null} is returned.
<p/>
If any exceptions are thrown, the {@link #onRememberedPrincipalFailure(RuntimeException, SubjectContext)} method
is called to allow any necessary post-processing (such as immediately removing any previously remembered
values for safety).

@param subjectContext the contextual data, usually provided by a {@link Subject.Builder} implementation, that
                      is being used to construct a {@link Subject} instance.
@return the remembered principals or {@code null} if none could be acquired.
core/src/main/java/org/apache/shiro/mgt/AbstractRememberMeManager.java