docs: private static CharSequence js_substring(Context cx, CharSequence target,
                                         Object[] args)
      {
          int length = target.length();
          double start = ScriptRuntime.toInteger(args, 0);
          double end;
  
          if (start < 0)
              start = 0;
          else if (start > length)
              start = length;
  
          if (args.length <= 1 || args[1] == Undefined.instance) {
              end = length;
          } else {
              end = ScriptRuntime.toInteger(args[1]);
              if (end < 0)
                  end = 0;
              else if (end > length)
                  end = length;
  
              // swap if end < start
              if (end < start) {
                  if (cx.getLanguageVersion() != Context.VERSION_1_2) {
                      double temp = start;
                      start = end;
                      end = temp;
                  } else {
                      // Emulate old JDK1.0 java.lang.String.substring()
                      end = start;
                  }
              }
          }
          return target.subSequence((int)start, (int)end);
      }