class CertificateSelector {

    public CertificateSelector<T> byEncodedPublicKey(final byte[] encodedPublicKey) {
        Preconditions.checkArgument(
                ArrayUtils.isNotEmpty(encodedPublicKey),
                "publicKey cannot be null or empty."
        );

        setFieldValue(
                Certificate.ENCODED_PUBLIC_KEY_FIELD,
                Arrays.copyOf(encodedPublicKey, encodedPublicKey.length)
        );

        return this;
    }

    public  CertificateSelector(
            final CertificateManager certificateManager,
            final Class<T> certificateClass);
    public  CertificateSelector(
            final CertificateManager certificateManager,
            final Class<T> certificateClass, final boolean excludeArchivedCertificates);

}