code: private static NumberingSystem getInstance(String name_in, int radix_in, boolean isAlgorithmic_in, String desc_in ) {
          if ( radix_in < 2 ) {
              throw new IllegalArgumentException("Invalid radix for numbering system");
          }
  
          if ( !isAlgorithmic_in ) {
              if ( desc_in.length() != radix_in || !isValidDigitString(desc_in)) {
                  throw new IllegalArgumentException("Invalid digit string for numbering system");
              }
          }
          NumberingSystem ns = new NumberingSystem();
          ns.radix = radix_in;
          ns.algorithmic = isAlgorithmic_in;
          ns.desc = desc_in;
          ns.name = name_in;
          return ns;
      }
docs: Factory method for creating a numbering system.
  @param name_in The string representing the name of the numbering system.
  @param radix_in The radix for this numbering system.  ICU currently
  supports only numbering systems whose radix is 10.
  @param isAlgorithmic_in Specifies whether the numbering system is algorithmic
  (true) or numeric (false).
  @param desc_in String used to describe the characteristics of the numbering
  system.  For numeric systems, this string contains the digits used by the
  numbering system, in order, starting from zero.  For algorithmic numbering
  systems, the string contains the name of the RBNF ruleset in the locale's
  NumberingSystemRules section that will be used to format numbers using
  this numbering system.