*/
private Variable getVariable(IBinding binding) {
Variable result = variables.get(binding);
if(result == null) {
if(binding instanceof IVariableBinding) {
IVariableBinding vb = (IVariableBinding) binding;
if(vb.isEnumConstant() || vb.isField())
throw new IllegalArgumentException("Not a local: " + binding);
// figure out whether it's declared locally
IMethodBinding declaredIn = vb.getDeclaringMethod();
while(declaredIn != null && declaredIn != declaredIn.getMethodDeclaration()) {
declaredIn = declaredIn.getMethodDeclaration();
}
result = new SourceVariable(vb.getName(), vb, method.equals(declaredIn));
}
else if(binding instanceof ITypeBinding) {
ITypeBinding tb = (ITypeBinding) binding;
result = new TypeVariable(tb);
}