@@ -0,0 +1,336 @@
+package org.xander.behavioral.lazyevaluation;%0A%0Apublic class Factorial %7B%0A%0A    public static void main(String%5B%5D args) %7B%0A        System.out.println(factorial(5));%0A        System.out.println(factorial(20000));%0A    %7D%0A%0A    public static int factorial(final int number) %7B%0A        return TailCalls.factorialTailRec(1, number).invoke();%0A    %7D%0A%7D%0A

Create Factorial.java