code: public String replaceFirst(String replacement) {
          if (replacement == null)
              throw new NullPointerException("replacement");
          reset();
          return matcher.replaceFirst(replacement);
      }
docs: Replaces the first subsequence of the input sequence that matches the
  pattern with the given replacement string.
  <br>
  This method first resets this matcher.  It then scans the input
  sequence looking for a match of the pattern.  Characters that are not
  part of the match are appended directly to the result string; the match
  is replaced in the result by the replacement string.  The replacement
  string may contain references to captured subsequences.
  <br>
  Note that backslashes (<tt>\</tt>) and dollar signs (<tt>$</tt>) in
  the replacement string may cause the results to be different than if it
  were being treated as a literal replacement string. Dollar signs may be
  treated as references to captured subsequences as described above, and
  backslashes are used to escape literal characters in the replacement
  string.
  <br>
  Given the regular expression <tt>dog</tt>, the input
  <tt>"zzzdogzzzdogzzz"</tt>, and the replacement string
  <tt>"cat"</tt>, an invocation of this method on a matcher for that
  expression would yield the string <tt>"zzzcatzzzdogzzz"</tt>.
  <br>
  Invoking this method changes this matcher's state.  If the matcher
  is to be used in further matching operations then it should first be
  reset.
  
  @param  replacement
  The replacement string
  @return  The string constructed by replacing the first matching
  subsequence by the replacement string, substituting captured
  subsequences as needed