merge closure and hoisting. fix wrong id when accessing let value defined with more than 1 level higher