@@ -0,0 +1,470 @@
+package org.xander.behavioral.lazyevaluation;%0A%0A@FunctionalInterface%0Apublic interface TailCall%3CT%3E %7B%0A    TailCall%3CT%3E apply();%0A    default boolean isComplete() %7B return false; %7D%0A    default T result() %7B throw new Error(%22not implemented%22); %7D%0A    default T invoke() %7B%0A        return Stream.iterate(this, TailCall::apply)%0A                     .filter(TailCall::isComplete)%0A                     .findFirst()%0A                     .get()%0A                     .result();%0A    %7D %0A%7D%0A

Create TailCall.java