classifyWriteAccess(writeAccesses, node.getOperand());
classifyWriteAccess(node.getOperand());
	private boolean bodySatifiesPreconditions() {		// checks in a single pass through Loop's body that arrayOrIndexNotAssignedTo		// and indexNotReferencedOutsideInferredArray		final List writeAccesses= new ArrayList();		final boolean isIndexReferenced[]= {false};				fOldForStatement.getBody().accept(new ASTVisitor() {			public boolean visit(Assignment assignment) {				classifyWriteAccess(writeAccesses, assignment.getLeftHandSide());				return true;			}			public boolean visit(PostfixExpression node) {				classifyWriteAccess(writeAccesses, node.getOperand());				return true;			}			public boolean visit(PrefixExpression node) {				classifyWriteAccess(writeAccesses, node.getOperand());				return true;			}			public boolean visit(SimpleName name) {				IBinding binding= name.resolveBinding();				if (Bindings.equals(fIndexBinding, binding)) {					ASTNode parent= name.getParent(); 					// check if the direct parent is an ArrayAcces					if (parent instanceof ArrayAccess){						// even if the Index is referenced within an ArrayAccess						// it could happen that the Array is not the same as the						// inferred Array						isIndexReferenced[0]= isAccessToADifferentArray((ArrayAccess)parent);					}					else {						//otherwise the Index is referenced outside ArrayAccess						isIndexReferenced[0]= true;					}				}				return false;			}				private void classifyWriteAccess(List writeAccesses, Expression expression) {				//check that				if (expression instanceof ArrayAccess) {					checkThatArrayIsNotAssigned(writeAccesses, expression);				} else if (expression instanceof Name) {					checkThatIndexIsNotAssigned(writeAccesses, expression);				}			}		});		return writeAccesses.isEmpty() && !isIndexReferenced[0];	}