code: protected void exportSuccessfulResult(String prefix, R result) {
          if (prefix == null) {
              return;
          }
          setPropertyIfNoNull(prefix, "input", result.getInput());
          if (!result.isSuccessful()) {
              return;
          }
          setPropertyIfNoNull(prefix, "input", result.getInput());
          setPropertyIfNoNull(prefix, "before", result.getBefore());
          setPropertyIfNoNull(prefix, "group", result.group());
          setPropertyIfNoNull(prefix, "success", "true");
          for (int i = 1; i <= result.groupCount(); i++) {
              setPropertyIfNoNull(prefix, "group." + i, result.group(i));
          }
      }
docs: Exports the successful result of the match as a set of properties with the given prefix.
  The properties key/value
  format is as follows:
  <ul>
  <li>{@code prefix + ".before" = result.getBefore()}</li>
  <li>{@code prefix + ".group" = result.group()}</li>
  <li>{@code prefix + ".success" = true}</li>
  <li>{@code prefix + ".group." + &lt;number&gt; = result.group(&lt;number&gt;)},
  where the {@code number}
  is between 1 and {@code result.groupCount()}</li>
  </ul>
  If the {@code prefix} is {@code null}, or the {@code result} is not successful,
  then this method does nothing.
  
  @param prefix the property prefix
  @param result the result