code: @Override
      public FastStr replace(char oldChar, char newChar) {
          if (oldChar != newChar) {
              char[] val = this.buf; /* avoid getfield opcode */
              int len = length();
              int i = begin - 1;
  
              while (++i < end) {
                  if (val[i] == oldChar) {
                      break;
                  }
              }
              if (i < end) {
                  char buf[] = new char[len];
                  for (int j = begin; j < i; j++) {
                      buf[j - begin] = val[j];
                  }
                  while (i < end) {
                      char c = val[i];
                      buf[i - begin] = (c == oldChar) ? newChar : c;
                      i++;
                  }
                  return new FastStr(buf, 0, len);
              }
          }
          return this;
      }
docs: Wrapper of {@link String#replace(char, char)} but return FastStr instance
  
  @param oldChar char to be replaced
  @param newChar char used to replace {@code oldChar}
  @return a FastStr instance with all {@code oldChar} been replaced with {@code newChar}