class X509Bundle implements BundleSource<X509Bundle> {

    public static X509Bundle load(@NonNull final TrustDomain trustDomain, @NonNull final Path bundlePath) throws X509BundleException {
        final byte[] bundleBytes;
        try {
            bundleBytes = Files.readAllBytes(bundlePath);
        } catch (IOException e) {
            throw new X509BundleException("Unable to load X.509 bundle file", e);
        }

        val x509Certificates = generateX509Certificates(bundleBytes);
        val x509CertificateSet = new HashSet<>(x509Certificates);
        return new X509Bundle(trustDomain, x509CertificateSet);
    }

    public  X509Bundle(@NonNull final TrustDomain trustDomain);
    public  X509Bundle(@NonNull final TrustDomain trustDomain, @NonNull final Set<X509Certificate> x509Authorities);

}