docs: public final void setTarget(Matcher m, int groupId) {
          MemReg mr = m.bounds(groupId);
          if (mr == null) throw new IllegalArgumentException("group #" + groupId + " is not assigned");
          data = m.data;
          offset = mr.in;
          end = mr.out;
          cache = m.cache;
          cacheLength = m.cacheLength;
          cacheOffset = m.cacheOffset;
          if (m != this) {
              shared = true;
              m.shared = true;
          }
          init();
      }