docs: def generate(cls, country_code, bank_code, account_code):
          """Generate an IBAN from it's components.
  
          If the bank-code and/or account-number have less digits than required by their
          country specific representation, the respective component is padded with zeros.
  
          Examples:
  
              To generate an IBAN do the following::
  
                  >>> bank_code = '37040044'
                  >>> account_code = '532013000'
                  >>> iban = IBAN.generate('DE', bank_code, account_code)
                  >>> iban.formatted
                  'DE89 3704 0044 0532 0130 00'
  
          Args:
              country_code (str): The ISO 3166 alpha-2 country code.
              bank_code (str): The country specific bank-code.
              account_code (str): The customer specific account-code.
          """
          spec = _get_iban_spec(country_code)
          bank_code_length = code_length(spec, 'bank_code')
          branch_code_length = code_length(spec, 'branch_code')
          bank_and_branch_code_length = bank_code_length + branch_code_length
          account_code_length = code_length(spec, 'account_code')
  
          if len(bank_code) > bank_and_branch_code_length:
              raise ValueError(
                  "Bank code exceeds maximum size {}".format(bank_and_branch_code_length))
  
          if len(account_code) > account_code_length:
              raise ValueError(
                  "Account code exceeds maximum size {}".format(account_code_length))
  
          bank_code = bank_code.rjust(bank_and_branch_code_length, '0')
          account_code = account_code.rjust(account_code_length, '0')
          iban = country_code + '??' + bank_code + account_code
          return cls(iban)