Abstractly
Complications include:
- multiple return statements
- complex predicates
- complex modifications
- combinations of these
function foo (arg1, otherargs){
if predicate(arg1) return value
....possibly other stuff....
return foo(modified arg1, otherargs)