title: How can a Java lambda-expression reference itself?
body: <p>I found <a href="http://dig.cs.illinois.edu/papers/lambdaRefactoring.pdf">this article</a> to be very informative in comparison of old-style functions to new Java-8 lambda-functions and parallel processing. One thing I couldn't quite understand was one restriction on the lambda-functions: From page 4:</p>
  
  <blockquote>
    <p>3.3 Preconditions
    Although lambda expressions are intended as a more con-
    cise alternative to
    AIC
    , they are not a complete replacement.
    There are several preconditions that
    LambdaFicator
    checks
    before refactoring an
    AIC
    into a lambda expression. These
    preconditions are inherent to how lambda expressions are
    implemented in Java, not limitations of our tool.
    (P1)
    AIC
    must instantiate from an interface. Instances of
    abstract or concrete classes cannot be converted to lambda
    expressions.
    (P2)
    AIC
    must have no fields, and declare only one method.
    A lambda expression represents a single anonymous func-
    tion; therefore, an
    AIC
    with multiple methods can not be
    converted to a single lambda expression.
    (P3)
    AIC
    must not have references to
    this
    or
    super
    . In
    a lambda expression,
    this
    and
    super
    are lexically scoped,
    meaning they are interpreted just as they would be in the
    enclosing environment, e.g., as if they appeared in the state-
    ment before the lambda expression [6]. However, in an
    AIC
    they refer to the inner class itself.
    (P4)
    AIC
    must not declare a recursive method. In order to
    perform the recursive call, we must obtain a reference to the
    anonymous function. While
    LambdaFicator
    could perform
    this refactoring, this could introduce unneeded complexity
    into the code and harm understandability.</p>
  </blockquote>
  
  <p>On P4, "AIC must not declare a recursive method... LambdaFicator could perform this refactoring...", how could one refactor a lambda expression to reference itself? Since by definition these lambda anonymous-functions don't have a name that can be referenced, and don't have a reference to themselves (P3 above).?</p>