code: @Override
      public TransferCertificateResult transferCertificate(TransferCertificateRequest request) {
          request = beforeClientExecution(request);
          return executeTransferCertificate(request);
      }
docs: <p>
  Transfers the specified certificate to the specified AWS account.
  </p>
  <p>
  You can cancel the transfer until it is acknowledged by the recipient.
  </p>
  <p>
  No notification is sent to the transfer destination's account. It is up to the caller to notify the transfer
  target.
  </p>
  <p>
  The certificate being transferred must not be in the ACTIVE state. You can use the UpdateCertificate API to
  deactivate it.
  </p>
  <p>
  The certificate must not have any policies attached to it. You can use the DetachPrincipalPolicy API to detach
  them.
  </p>
  
  @param transferCertificateRequest
  The input for the TransferCertificate operation.
  @return Result of the TransferCertificate operation returned by the service.
  @throws InvalidRequestException
  The request is not valid.
  @throws ResourceNotFoundException
  The specified resource does not exist.
  @throws CertificateStateException
  The certificate operation is not allowed.
  @throws TransferConflictException
  You can't transfer the certificate because authorization policies are still attached.
  @throws ThrottlingException
  The rate exceeds the limit.
  @throws UnauthorizedException
  You are not authorized to perform this operation.
  @throws ServiceUnavailableException
  The service is temporarily unavailable.
  @throws InternalFailureException
  An unexpected error has occurred.
  @sample AWSIot.TransferCertificate