docs: public void add(int position) {
      if (mtasPositionType.equals(POSITION_SINGLE)) {
        if (position != mtasPositionStart) {
          if (position == (mtasPositionStart + 1)) {
            mtasPositionType = POSITION_RANGE;
            mtasPositionEnd = position;
          } else if (position == (mtasPositionStart - 1)) {
            mtasPositionType = POSITION_RANGE;
            mtasPositionEnd = mtasPositionStart;
            mtasPositionStart = position;
          } else {
            mtasPositionType = POSITION_SET;
            SortedSet<Integer> list = new TreeSet<>();
            list.add(position);
            list.add(mtasPositionStart);
            mtasPositionList = ArrayUtils
                .toPrimitive(list.toArray(new Integer[list.size()]));
            mtasPositionStart = list.first();
            mtasPositionEnd = list.last();
          }
        }
      } else {
        SortedSet<Integer> list = new TreeSet<>();
        if (mtasPositionType.equals(POSITION_RANGE)) {
          mtasPositionType = POSITION_SET;
          for (int i = mtasPositionStart; i <= mtasPositionEnd; i++) {
            list.add(i);
          }
          list.add(position);
        } else if (mtasPositionType.equals(POSITION_SET)) {
          for (int p : mtasPositionList) {
            list.add(p);
          }
          list.add(position);
        }
        mtasPositionList = ArrayUtils
            .toPrimitive(list.toArray(new Integer[list.size()]));
        mtasPositionStart = list.first();
        mtasPositionEnd = list.last();
        if (list.size() == (1 + mtasPositionEnd - mtasPositionStart)) {
          mtasPositionType = POSITION_RANGE;
          mtasPositionList = null;
        }
      }
    }