code: @Override
      public String substring(int beginIndex, int endIndex) {
          if (beginIndex < 0) {
              throw new StringIndexOutOfBoundsException(beginIndex);
          }
          char[] buf = this.buf;
          int sz = buf.length;
          if (endIndex > sz) {
              throw new StringIndexOutOfBoundsException(endIndex);
          }
          int subLen = endIndex - beginIndex;
          if (subLen < 0) {
              throw new StringIndexOutOfBoundsException(subLen);
          }
          return ((beginIndex == 0) && (endIndex == sz)) ? toString()
                  : new String(buf, toInternalId(beginIndex), subLen);
      }
docs: Wrapper of {@link String#substring(int, int)}
  
  @param beginIndex begin index
  @param endIndex end index
  @return a String instance that is equivalent to sub part of this FastStr