code: static <T extends Temporal<? super T>, I extends IsoInterval<T, I>> IntervalParser<T, I> of(
          IntervalFactory<T, I> factory,
          ChronoParser<T> startFormat,
          ChronoParser<T> endFormat,
          BracketPolicy policy,
          char separator
      ) {
  
          if (startFormat == null) {
              throw new NullPointerException("Missing start boundary parser.");
          } else if (endFormat == null) {
              throw new NullPointerException("Missing end boundary parser.");
          }
  
          return new IntervalParser<>(
              factory,
              startFormat,
              endFormat,
              policy,
              Character.valueOf(separator));
  
      }
docs: <p>General factory method. </p>
  
  @param   <T> generic temporal type
  @param   <I> generic interval type
  @param   factory         interval factory
  @param   startFormat     formatter for lower interval boundary
  @param   endFormat       formatter for upper interval boundary
  @param   policy          bracket policy
  @param   separator       separation char  between start and end component
  @return  new interval parser
  @since   3.9/4.6