code: public static final List<DelimiterInfo> extractDelimiterList(final String str, final String delimiter) {
          assertStringNotNull(str);
          assertDelimiterNotNull(delimiter);
          final List<DelimiterInfo> delimiterList = new ArrayList<DelimiterInfo>();
          DelimiterInfo previous = null;
          String rear = str;
          while (true) {
              final int beginIndex = rear.indexOf(delimiter);
              if (beginIndex < 0) {
                  break;
              }
              final DelimiterInfo info = new DelimiterInfo();
              info.setBaseString(str);
              info.setDelimiter(delimiter);
              final int absoluteIndex = (previous != null ? previous.getEndIndex() : 0) + beginIndex;
              info.setBeginIndex(absoluteIndex);
              info.setEndIndex(absoluteIndex + delimiter.length());
              if (previous != null) {
                  info.setPrevious(previous);
                  previous.setNext(info);
              }
              delimiterList.add(info);
              previous = info;
              rear = str.substring(info.getEndIndex());
              continue;
          }
          return delimiterList;
      }
docs: ==================