public static Cons matchDateTimePatterns(String dateTimeString, int start, int end, boolean errorOnMismatchP) {
    { Object old$ErrorOnMismatch$000 = Stella.$ERROR_ON_MISMATCH$.get();

      try {
        Native.setBooleanSpecial(Stella.$ERROR_ON_MISMATCH$, errorOnMismatchP);
        { Cons stringParts = Stella.decomposeDateTimeString(dateTimeString, start, end);
          int partsLength = stringParts.length();
          Cons stringForm = Stella.NIL;

          { Stella_Object pattern = null;
            Cons iter000 = ((Cons)(Stella.$DATE_TIME_PATTERNS$.get()));

            loop000 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
              pattern = iter000.value;
              stringForm = Cons.matchPattern(((Cons)(pattern)), stringParts, partsLength);
              if (!(stringForm == Stella.NIL)) {
                break loop000;
              }
            }
          }
          if (stringForm == Stella.NIL) {
            if (errorOnMismatchP) {
              { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

                stream000.nativeStream.print("\"`" + dateTimeString + "'\" is not a recognized time/date format.");
                throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
              }
            }
            else {
              return (null);
            }
          }
          else {
            return (stringForm);
          }
        }

      } finally {
        Stella.$ERROR_ON_MISMATCH$.set(old$ErrorOnMismatch$000);
      }
    }
  }