docs: private String getNormalizedUrl(DebuggableScript fnOrScript) {
          String url = fnOrScript.getSourceName();
          if (url == null) { url = "<stdin>"; }
          else {
              // Not to produce window for eval from different lines,
              // strip line numbers, i.e. replace all #[0-9]+\(eval\) by
              // (eval)
              // Option: similar teatment for Function?
              char evalSeparator = '#';
              StringBuilder sb = null;
              int urlLength = url.length();
              int cursor = 0;
              for (;;) {
                  int searchStart = url.indexOf(evalSeparator, cursor);
                  if (searchStart < 0) {
                      break;
                  }
                  String replace = null;
                  int i = searchStart + 1;
                  while (i != urlLength) {
                      int c = url.charAt(i);
                      if (!('0' <= c && c <= '9')) {
                          break;
                      }
                      ++i;
                  }
                  if (i != searchStart + 1) {
                      // i points after #[0-9]+
                      if ("(eval)".regionMatches(0, url, i, 6)) {
                          cursor = i + 6;
                          replace = "(eval)";
                      }
                  }
                  if (replace == null) {
                      break;
                  }
                  if (sb == null) {
                      sb = new StringBuilder();
                      sb.append(url.substring(0, searchStart));
                  }
                  sb.append(replace);
              }
              if (sb != null) {
                  if (cursor != urlLength) {
                      sb.append(url.substring(cursor));
                  }
                  url = sb.toString();
              }
          }
          return url;
      }