* Remove binary ast nodes
* SourceElementRequestVisitor uses IElementRequestor as input requesting element.
diff --git a/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java b/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java
index 6a17222..9f5b669 100644
--- a/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java
+++ b/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java
@@ -52,7 +52,8 @@
 		private ASTNode fToNode;
 
 		private ASTNode declaredIn; // The node where the declaration was found
-									// (should be either class or method node)
+
+		// (should be either class or method node)
 		TypeField(String name, String initValue, PositionInformation pos,
 				Expression expression, ASTNode toNode, ASTNode declaredIn) {
 
@@ -113,7 +114,7 @@
 	private static String ANONYMOUS_LAMBDA_FORM_MARKER = "<anonymous>";
 	// Used to prehold fields if adding in methods.
 	private List fNotAddedFields = new ArrayList();
-	
+
 	private String lastLambdaFormName = ANONYMOUS_LAMBDA_FORM_MARKER;
 
 	/**
@@ -144,8 +145,8 @@
 		return outValue;
 	}
 
-	private void onVisitLambdaAssignnment(String ref, PythonLambdaExpression lambdaExpression)
-	{
+	private void onVisitLambdaAssignnment(String ref,
+			PythonLambdaExpression lambdaExpression) {
 		// Declare new Method.
 		List/* < Argument > */args = lambdaExpression.getArguments();
 
@@ -167,15 +168,17 @@
 		mi.declarationStart = lambdaExpression.sourceStart();
 
 		this.fRequestor.enterMethod(mi);
-//FIXME		Expression body = lambdaExpression.getBodyExpression();
-//FIXME		if (body instanceof PythonLambdaExpression)
-//FIXME			onVisitLambdaAssignnment(ANONYMOUS_LAMBDA_FORM_MARKER,(PythonLambdaExpression)body);
+		// FIXME Expression body = lambdaExpression.getBodyExpression();
+		// FIXME if (body instanceof PythonLambdaExpression)
+		// FIXME
+		// onVisitLambdaAssignnment(ANONYMOUS_LAMBDA_FORM_MARKER,(PythonLambdaExpression)body);
 		this.fRequestor.exitMethod(lambdaExpression.sourceEnd());
 	}
-	private void onVisitStaticVariableAssignment(SimpleReference var, Statement val)
-	{
+
+	private void onVisitStaticVariableAssignment(SimpleReference var,
+			Statement val) {
 		// for module static of class static variables.
-		
+
 		if (canAddVariables((ASTNode) this.fNodes.peek(), var.getName())) {
 			ISourceElementRequestor.FieldInfo info = new ISourceElementRequestor.FieldInfo();
 			info.modifiers = Modifiers.AccStatic;
@@ -191,21 +194,21 @@
 			}
 		}
 	}
-	private void onVisitInstanceVariableAssignment(ExtendedVariableReference extendedVariable, Statement right)
-	{
+
+	private void onVisitInstanceVariableAssignment(
+			ExtendedVariableReference extendedVariable, Statement right) {
 		List varParts = extendedVariable.getExpressions();
 		if (extendedVariable.isDot(0)) {
 			Expression first = (Expression) varParts.get(0);
 			Expression second = (Expression) varParts.get(1);
 
-			if (first instanceof VariableReference && second instanceof VariableReference) {
+			if (first instanceof VariableReference
+					&& second instanceof VariableReference) {
 				String varName = ((VariableReference) first).getName();
-				MethodDeclaration currentMethod = this
-						.getCurrentMethod();
+				MethodDeclaration currentMethod = this.getCurrentMethod();
 				List arguments = currentMethod.getArguments();
 				if (arguments != null && arguments.size() > 0) {
-					Argument firstArgument = (Argument) arguments
-							.get(0);
+					Argument firstArgument = (Argument) arguments.get(0);
 					String argumentName = firstArgument.getName();
 					if (argumentName.equals(varName)) {
 						VariableReference var = (VariableReference) second;
@@ -215,19 +218,21 @@
 							initialValueStart = right.sourceStart();
 							initialValueEnd = right.sourceEnd();
 						}
-						PositionInformation pos = new PositionInformation(
-								var.sourceStart(), var.sourceEnd(),
+						PositionInformation pos = new PositionInformation(var
+								.sourceStart(), var.sourceEnd(),
 								initialValueStart, initialValueEnd);
 						String initialString = this.makeValue(right);
 						ASTNode method = (ASTNode) this.fNodes.pop();
 						ASTNode toClass = (ASTNode) this.fNodes.peek();
 						this.fNodes.push(method);
-						if (toClass instanceof TypeDeclaration) 
-						{
-							List decorators = ((MethodDeclaration)method).getDecorators();
-							if (null == decorators || null != decorators && decorators.size() == 0)
-							{
-								TypeField field = new TypeField(var.getName(), initialString, pos, extendedVariable, toClass, method);
+						if (toClass instanceof TypeDeclaration) {
+							List decorators = ((MethodDeclaration) method)
+									.getDecorators();
+							if (null == decorators || null != decorators
+									&& decorators.size() == 0) {
+								TypeField field = new TypeField(var.getName(),
+										initialString, pos, extendedVariable,
+										toClass, method);
 								this.fNotAddedFields.add(field);
 							}
 						}
@@ -236,49 +241,49 @@
 			}
 		}
 	}
-	private void onVisitTestListAssignment(ExpressionList left, Statement right)
-	{
+
+	private void onVisitTestListAssignment(ExpressionList left, Statement right) {
 		Iterator iter = left.getChilds().iterator();
-		if (right instanceof ExpressionList)
-		{
-			ExpressionList exprs = (ExpressionList)right;
+		if (right instanceof ExpressionList) {
+			ExpressionList exprs = (ExpressionList) right;
 			Iterator j = exprs.getChilds().iterator();
-			while (iter.hasNext() && j.hasNext())
-			{
-				Expression expr = (Expression)iter.next();
-				processAssignment(expr, (Expression)j.next());
+			while (iter.hasNext() && j.hasNext()) {
+				Expression expr = (Expression) iter.next();
+				processAssignment(expr, (Expression) j.next());
 			}
-			
-		}
-		else
-		{
-			while (iter.hasNext())
-			{
-				Expression expr = (Expression)iter.next();
+
+		} else {
+			while (iter.hasNext()) {
+				Expression expr = (Expression) iter.next();
 				processAssignment(expr, right);
 			}
 		}
 	}
-	private void processAssignment(Statement left, Statement right)
-	{
-		if (left instanceof Assignment)
-		{
+
+	private void processAssignment(Statement left, Statement right) {
+		if (left instanceof Assignment) {
 			Assignment assignment = (Assignment) left;
 			processAssignment(assignment.getLeft(), right);
 			processAssignment(assignment.getRight(), right);
-		}
-		else if (left instanceof SimpleReference && right instanceof PythonLambdaExpression)
-			onVisitLambdaAssignnment(((SimpleReference)left).getName(), (PythonLambdaExpression)right);
-		else if (left instanceof VariableReference && !this.fInMethod)							// Handle static variables
-			onVisitStaticVariableAssignment((VariableReference)left, right);
-		else if (left instanceof ExtendedVariableReference && this.fInClass && this.fInMethod) 	// This is for in class and in method.
-			onVisitInstanceVariableAssignment((ExtendedVariableReference)left, right);
+		} else if (left instanceof SimpleReference
+				&& right instanceof PythonLambdaExpression)
+			onVisitLambdaAssignnment(((SimpleReference) left).getName(),
+					(PythonLambdaExpression) right);
+		else if (left instanceof VariableReference && !this.fInMethod) // Handle
+																		// static
+																		// variables
+			onVisitStaticVariableAssignment((VariableReference) left, right);
+		else if (left instanceof ExtendedVariableReference && this.fInClass
+				&& this.fInMethod) // This is for in class and in method.
+			onVisitInstanceVariableAssignment((ExtendedVariableReference) left,
+					right);
 		else if (left instanceof ExpressionList)
-			onVisitTestListAssignment((ExpressionList)left, right);
+			onVisitTestListAssignment((ExpressionList) left, right);
 		else {// TODO: dynamic variable handling not yet
-				// supported.
+			// supported.
 		}
 	}
+
 	public boolean visit(Expression expression) throws Exception {
 
 		if (expression instanceof Assignment) {
@@ -293,13 +298,12 @@
 			}
 			processAssignment(left, right);
 			return false;
-		}
-		else if (expression instanceof ExtendedVariableReference) {
+		} else if (expression instanceof ExtendedVariableReference) {
 			ExtendedVariableReference ref = (ExtendedVariableReference) expression;
 			int expressionCount = ref.getExpressionCount();
 			for (int i = 0; i < expressionCount; i++) {
 				Expression e = ref.getExpression(i);
-				if (ref.isCall(i) && e instanceof VariableReference ) {
+				if (ref.isCall(i) && e instanceof VariableReference) {
 					this.fRequestor.acceptMethodReference(
 							((VariableReference) e).getName().toCharArray(), 0,
 							e.sourceStart(), e.sourceEnd());
@@ -323,18 +327,16 @@
 
 	protected void onEndVisitMethod(MethodDeclaration method) {
 
-		if (fNotAddedFields.size() >= 1)
-		{	
+		if (fNotAddedFields.size() >= 1) {
 			TypeField typeField = (TypeField) fNotAddedFields.get(0);
-			if (null != typeField && typeField.getDeclaredIn().equals(method))
-			{
+			if (null != typeField && typeField.getDeclaredIn().equals(method)) {
 				Iterator i = this.fNotAddedFields.iterator();
 				while (i.hasNext()) {
 					TypeField field = (TypeField) i.next();
 					if (canAddVariables(field.getToNode(), field.getName())) {
-		
+
 						PositionInformation pos = field.getPos();
-		
+
 						ISourceElementRequestor.FieldInfo info = new ISourceElementRequestor.FieldInfo();
 						info.modifiers = Modifiers.AccStatic;
 						info.name = field.getName();
@@ -343,7 +345,7 @@
 						info.declarationStart = pos.sourceStart;
 						this.fRequestor.enterField(info);
 						this.fRequestor.exitField(pos.sourceEnd);
-		
+
 					}
 				}
 				this.fNotAddedFields.clear();
@@ -446,7 +448,7 @@
 		mi.nameSourceEnd = method.getNameEnd() - 1;
 		mi.declarationStart = method.sourceStart();
 
-		this.fRequestor.enterMethodRemoveSame(mi);
+		((ISourceElementRequestor) this.fRequestor).enterMethodRemoveSame(mi);
 
 		this.fInMethod = true;
 		this.fCurrentMethod = method;