Returning 'base' not only causes the test to not timeout, but it also causes the test to run in the same thread as the parent thread. This change in behavior while debugging can make it challenging to track down bugs.

I suggest instead:

    return new FailOnTimeout(base, 0, fTimeUnit, fLookForStuckThread);