fixed loading nodes with circular dependencies
moved redundant code analysis to INode level

this allows for further optimization after INode expansion
primarily solves dependency issues with begin nodes