code: public KSI build() throws KSIException {
          notNull(signingService, "KSI signing service");
          notNull(extendingService, "KSI extending service");
          notNull(publicationsFileClient, "KSI publications file");
          notNull(certSelector, "KSI publications file trusted certificate selector");
          if (defaultHashAlgorithm == null) {
              this.defaultHashAlgorithm = HashAlgorithm.SHA2_256;
          }
          if (trustStore == null) {
              this.setPublicationsFilePkiTrustStore(new File(getDefaultTrustStore()), null);
          }
          if (defaultVerificationPolicy == null) {
              this.defaultVerificationPolicy = new InternalVerificationPolicy();
          }
  
          logger.info("KSI SDK initialized with signing service: {}", signingService);
          logger.info("KSI SDK initialized with extender service: {}", extendingService);
  
          PublicationsHandler publicationsHandler =
                  new PublicationsHandlerBuilder().setKsiProtocolPublicationsFileClient(publicationsFileClient)
                  .setPublicationsFileCacheExpirationTime(publicationsFileCacheExpirationTime)
                  .setPublicationsFilePkiTrustStore(trustStore)
                  .setPublicationsFileCertificateConstraints(certSelector).build();
  
          ContextAwarePolicy contextAwarePolicy =
                  ContextAwarePolicyAdapter.createPolicy(defaultVerificationPolicy, publicationsHandler, extendingService);
  
          Reader reader = new SignatureReader(contextAwarePolicy);
          Signer signer = new SignerBuilder().setDefaultSigningHashAlgorithm(defaultHashAlgorithm)
                  .setDefaultVerificationPolicy(contextAwarePolicy)
                  .setSigningService(signingService).build();
          Extender extender = new ExtenderBuilder().setDefaultVerificationPolicy(contextAwarePolicy)
                  .setExtendingService(extendingService)
                  .setPublicationsHandler(publicationsHandler).build();
          return new KSIImpl(reader, signer, extender, publicationsHandler);
      }
docs: Builds the {@link KSI} instance. Checks that the signing, extender and publications file clients are set.
  
  @return Instance of {@link KSI} class.
  @throws KSIException
  will be thrown when some client is null.