Something () { if (something == null) { if (isDuplicate()) { final TailRecursion2 recursion = getOriginal(); return recursion.<warning descr="Tail recursive call 'getSomething()'">getSomething</warning>(); } else { something = new Something(); } } return something; }