code: public static JapaneseEra registerEra(LocalDate since, String name) {
          JapaneseEra[] known = KNOWN_ERAS.get();
          if (known.length > 4) {
              throw new DateTimeException("Only one additional Japanese era can be added");
          }
          Jdk8Methods.requireNonNull(since, "since");
          Jdk8Methods.requireNonNull(name, "name");
          if (!since.isAfter(HEISEI.since)) {
              throw new DateTimeException("Invalid since date for additional Japanese era, must be after Heisei");
          }
          JapaneseEra era = new JapaneseEra(ADDITIONAL_VALUE, since, name);
          JapaneseEra[] newArray = Arrays.copyOf(known, 5);
          newArray[4] = era;
          if (!KNOWN_ERAS.compareAndSet(known, newArray)) {
              throw new DateTimeException("Only one additional Japanese era can be added");
          }
          return era;
      }
docs: Registers an additional instance of {@code JapaneseEra}.
  <p>
  A new Japanese era can begin at any time.
  This method allows one new era to be registered without the need for a new library version.
  If needed, callers should assign the result to a static variable accessible
  across the application. This must be done once, in early startup code.
  <p>
  NOTE: This method does not exist in Java SE 8.
  
  @param since  the date representing the first date of the era, validated not null
  @param name  the name
  @return the {@code JapaneseEra} singleton, not null
  @throws DateTimeException if an additional era has already been registered