def validate
      errors   = []
      errors << :invalid_characters unless valid_characters?
      errors << :invalid_country    unless valid_country?
      errors << :invalid_checksum   unless valid_characters? && valid_checksum?
      errors << :invalid_length     unless valid_length?
      errors << :invalid_format     unless valid_format?

      errors
    end
def validate
      errors   = []
      errors << :invalid_characters unless valid_characters?
      errors << :invalid_country    unless valid_country?
      errors << :invalid_checksum   unless valid_characters? && valid_checksum?
      errors << :invalid_length     unless valid_length?
      errors << :invalid_format     unless valid_format?

      errors
    end
@note
   The class method {ISO::IBAN.validate} uses {ISO::IBAN.parse}, which means it will strip whitespace and
   dashes from the IBAN.
   {ISO::IBAN#initialize} on the other hand expects the IBAN in compact format and will not strip
   those characters.

 Error codes:

 * :invalid_characters
 * :invalid_country
 * :invalid_checksum
 * :invalid_length
 * :invalid_format

 Invalid characters means that the IBAN contains characters which are not in the set of A-Za-z0-9. See {#invalid_characters}.
 Invalid country means the country is unknown (character 1 & 2 in the IBAN).
 Invalid checksum means the two check digits (character 3 & 4 in the IBAN).
 Invalid length means the IBAN does not comply with the length specified for the country of that IBAN.
 Invalid format means the IBAN does not comply with the format specified for the country of that IBAN.

 @return [Array<Symbol>] An array with a code of all validation errors, empty if valid.