private LocalVariableScope calculateScope ( LocalVariableScopeData scope ) { final TryCatchBlockLabels enclosingTry = getEnclosingTry ( scope ) ; final Label start = scope . labels . start ; final Label end = getTryFixedEndLabel ( scope , enclosingTry ) ; int startIndex = getIndex ( start ) ; int endIndex = getIndex ( end ) ; LocalVariableScopeData . LineNumbers scopeWithLineNumbers = getLineNumbers ( scope , enclosingTry , start , end ) ; return new LocalVariableScope ( scope . var , scope . name , VariableType . getByDesc ( scope . desc ) , scopeWithLineNumbers . startLine , scopeWithLineNumbers . endLine , startIndex , endIndex , getVarReferencesBeforeStart ( scope ) ) ; }
Calculate the start and end line numbers for variable scopes . If the LocalVariableScope start line is 0 then it is an input parameter as it s scope start label appeared before the method body .