Create a new argument replacing dispatcher; dispatches are forwarded to {@code target}
after the argument is replaced.
For example, if a method {@code onAction(T1 a, Integer b, T2 c)} is invoked, and we wanted
to replace all occurrences of {@code b} with {@code 0xDEADBEEF}, we would set
{@code argumentIndex = 1} and {@code replaceWith = 0xDEADBEEF}.
If a method dispatched has less arguments than {@code argumentIndex}, it is
passed through with the arguments unchanged.
mTarget = checkNotNull(target, "target must not be null");
mArgumentIndex = checkArgumentNonnegative(argumentIndex,
"argumentIndex must not be negative");
mReplaceWith = checkNotNull(replaceWith, "replaceWith must not be null");