== Why is this an issue?

The point of using closure expressions is to clearly express a succinct bit of logic. Start nesting closure expressions too deeply and you create a logic snarl that will likely snare both you and future maintainers.


=== Noncompliant code example

With the maximum depth of 2:

[source,text]
----
foo(42) { (x: Int) in
    bar(x) { (x: Int) in
      foobar(x) { // Noncompliant
        print(x * 42)  
      }
      print(x + 42)
    }
    print(x - 42)
}
----


=== Compliant solution

[source,text]
----
func multPlus(x:Int) {
  foobar(x) {
    print(x * 42)  
  }
  print(x + 42)
}

foo(42) { (x: Int) in
    bar(x, multPlus) 
    print(x - 42)
}
----

