Based on how the rule works, this is not a false positive.
In the reproducer, Stuff is used twice, once as an argument to another method and once it’s invoked.
The rule checks the invocations of methods with private accessibility, and in this case, there’s no invocation where the return value of Stuff is used.
This is why when you remove the invocation of the method Stuff(0), the rule no longer raises an issue.
Another way to not raise an issue is to use a discard like so: _ = Stuff(0);.
Sonar claims: “ not a single caller uses the returned value ”. That is not true: there is obviously an implementation of the interface that uses the return value, sorry for not making that clear enough.
Then it ordains a change that would break the code in a spectacular way.