code: 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();
      }
docs: This method allows to efficiently pass data between matchers.
  Note that a matcher may pass data to itself:<pre>
  Matcher m=new Pattern("\\w+").matcher(myString);
  if(m.find())m.setTarget(m,m.SUFFIX); //forget all that is not a suffix
  </pre>
  Resets current search position to zero.
  
  @param m       - a matcher that is a source of data
  @param groupId - which group to take data from
  @see Matcher#setTarget(java.lang.CharSequence)
  @see Matcher#setTarget(java.lang.CharSequence, int, int)
  @see Matcher#setTarget(char[], int, int)
  @see Matcher#setTarget(java.io.Reader, int)