There was a problem with including return, break, continue expressions. Previously i had disabled that every execution of return expression was checked (only event returns were) if the parent function was included. But this is important! Now, in the dependency graph i keep a stack of executionContextIds (updated when the interpreter enters or leaves a function), so that i know which dependencies were created in which function context. Then, when processing the encountered return expressions i know the last dependency index, i fetch all other dependencies also created in that context, check if at least was traversed (which means that it had included a code expression), and if it was i traverse the return dependencies starting from the last dependency index, if not, i disregard that mapping.