IScope (a var), IBlockScope (block var scope), ILocalScope (local var scope), IParameterScope (accepts params to scope), getDefinedScope() [for params will return appropriate IScope], getClosestIScope will just return immediate surrounding scope without caring about semantics