if (binding.getKind() != IBinding.VARIABLE)
return null;
IVariableBinding varBinding = (IVariableBinding) binding;
if (varBinding.isField())
return null;
IMethodBinding variableMethod = varBinding.getDeclaringMethod();
//match declaration block
ASTNode enclosingDeclarationBlock = ASTUtils.findAncestorOfType(name, ASTNode.METHOD_DECLARATION, ASTNode.INITIALIZER);
if (variableMethod != null) {
if (enclosingDeclarationBlock.getNodeType() != ASTNode.METHOD_DECLARATION)
return null; // we are in initializer
IMethodBinding enclosingMethod = ((MethodDeclaration)enclosingDeclarationBlock).resolveBinding();
if (varBinding.getDeclaringMethod() != enclosingMethod)
return null;
} else {//variable is defined in initializer
if (enclosingDeclarationBlock.getNodeType() != ASTNode.INITIALIZER)
return null; // we are some method