Why do runs of all methods takes longer (in the case of chainIf, almost 300% more time) when the values they are checking allow them all to short curcuit?
Because your benchmark is faulty. Please read the answer to a similar question:
Java loop gets slower after some runs / JIT's fault?