code: @Nonnull
    public static IBANCountryData createFromString (@Nonnull @Nonempty final String sCountryCode,
                                                    @Nonnegative final int nExpectedLength,
                                                    @Nullable final String sLayout,
                                                    @Nullable final String sFixedCheckDigits,
                                                    @Nullable final LocalDate aValidFrom,
                                                    @Nullable final LocalDate aValidTo,
                                                    @Nonnull final String sDesc)
    {
      ValueEnforcer.notEmpty (sDesc, "Desc");
      if (sDesc.length () < 4)
        throw new IllegalArgumentException ("Cannot converted passed string because it is too short!");
  
      final ICommonsList <IBANElement> aList = _parseElements (sDesc);
  
      final Pattern aPattern = _parseLayout (sCountryCode, nExpectedLength, sFixedCheckDigits, sLayout);
  
      // And we're done
      try
      {
        return new IBANCountryData (nExpectedLength, aPattern, sFixedCheckDigits, aValidFrom, aValidTo, aList);
      }
      catch (final IllegalArgumentException ex)
      {
        throw new IllegalArgumentException ("Failed to parse '" + sDesc + "': " + ex.getMessage ());
      }
    }
docs: This method is used to create an instance of this class from a string
  representation.
  
  @param sCountryCode
  Country code to use. Neither <code>null</code> nor empty.
  @param nExpectedLength
  The expected length having only validation purpose.
  @param sLayout
  <code>null</code> or the layout descriptor
  @param sFixedCheckDigits
  <code>null</code> or fixed check digits (of length 2)
  @param aValidFrom
  Validity start date. May be <code>null</code>.
  @param aValidTo
  Validity end date. May be <code>null</code>.
  @param sDesc
  The string description of this country data. May not be
  <code>null</code>.
  @return The parsed county data.