addToBadVarSet((SingleVariableDeclaration)parentNode);
if (! isMethodParameter(parentNode)){ addToBadVarSet((SingleVariableDeclaration)parentNode); return true; }  MethodDeclaration methodDeclaration= (MethodDeclaration)parentNode.getParent(); int parameterIndex= methodDeclaration.parameters().indexOf(parentNode); IMethod[] methods= getAllRippleMethods(methodDeclaration, new SubProgressMonitor(pm, 1));  if (methods == null){ SingleVariableDeclaration svd= getParameterDeclarationNode(parameterIndex, methodDeclaration); addToBadVarSet(svd); return true; } for (int i= 0; i < methods.length; i++) { SingleVariableDeclaration svd= getParameterDeclarationNode(parameterIndex, methods[i]); addToBadVarSet(svd); }
	private boolean hasDirectProblems(ASTNode node, IProgressMonitor pm) throws JavaModelException {		pm.beginTask("", 1);		try{			ASTNode parentNode= getUnparenthesizedParent(node);			if (parentNode instanceof ClassInstanceCreation){				if (node == ((ClassInstanceCreation)parentNode).getName())					return true;			}				if (parentNode instanceof TypeLiteral)				return true;			if (parentNode instanceof MethodInvocation)					return true;			if (parentNode instanceof FieldAccess)					return true;			if (parentNode instanceof QualifiedName)					return true;			if (parentNode instanceof ThisExpression)					return true;			if (parentNode instanceof SuperMethodInvocation)					return true;							if (parentNode instanceof MethodDeclaration){				MethodDeclaration md= (MethodDeclaration)parentNode;				if (md.thrownExceptions().contains(node))					return true;				if (node == md.getReturnType()){					ICompilationUnit cu= getCompilationUnit(node);					IMethodBinding binding= md.resolveBinding();					if (binding == null)						return true; //XXX					IMethod method= Binding2JavaModel.find(binding, cu.getJavaProject());					if (method != null && anyReferenceHasDirectProblems(method, new SubProgressMonitor(pm, 1)))						return true;					}			}										if (parentNode instanceof SingleVariableDeclaration && parentNode.getParent() instanceof CatchClause)				return true;							if (parentNode instanceof TypeDeclaration){				if(node == ((TypeDeclaration)parentNode).getSuperclass())				 	return true;			}			if (parentNode instanceof FieldDeclaration){				FieldDeclaration fd= (FieldDeclaration)parentNode;				if (fd.getType() == node && ! canReplaceTypeInFieldDeclaration(fd, new SubProgressMonitor(pm, 1))){					addAllToBadVarSet(getVariableDeclarationFragments(fd));					return true;										}			}			if (parentNode instanceof VariableDeclarationStatement){				VariableDeclarationStatement vds= (VariableDeclarationStatement)parentNode;				if (vds.getType() == node && ! canReplaceTypeInVariableDeclarationStatement(vds, new SubProgressMonitor(pm, 1))){					addAllToBadVarSet(getVariableDeclarationFragments(vds));					return true; 				}				}					if (parentNode instanceof SingleVariableDeclaration){				if (anyVariableReferenceHasDirectProblems((SingleVariableDeclaration)parentNode, new SubProgressMonitor(pm, 1))){					addToBadVarSet((SingleVariableDeclaration)parentNode);					return true;				}				} 			if (parentNode instanceof CastExpression){				if (isNotUpdatableReference(parentNode))					return true;			}			if (parentNode instanceof ImportDeclaration)					return true;				return false;			} finally {			pm.done();		}		}