*fix
diff --git a/plugins/org.eclipse.dltk.ruby.core/src/org/eclipse/dltk/ruby/internal/core/codeassist/RubySelectionParser.java b/plugins/org.eclipse.dltk.ruby.core/src/org/eclipse/dltk/ruby/internal/core/codeassist/RubySelectionParser.java
index e39f6f1..e956bbf 100644
--- a/plugins/org.eclipse.dltk.ruby.core/src/org/eclipse/dltk/ruby/internal/core/codeassist/RubySelectionParser.java
+++ b/plugins/org.eclipse.dltk.ruby.core/src/org/eclipse/dltk/ruby/internal/core/codeassist/RubySelectionParser.java
@@ -10,143 +10,157 @@
 package org.eclipse.dltk.ruby.internal.core.codeassist;
 
 import org.eclipse.dltk.ast.ASTNode;
+import org.eclipse.dltk.ast.declarations.ModuleDeclaration;
 
-//import antlr.ANTLRException;
-
+// import antlr.ANTLRException;
 
 public class RubySelectionParser extends RubyAssistParser {
-	
-	public void handleNotInElement(ASTNode node, int position) {		
+
+	public void handleNotInElement(ASTNode node, int position) {
 	}
 
 	public void parseBlockStatements(ASTNode node, ASTNode inNode, int position) {
-//		/**
-//		 * This is possible function completion.
-//		 */
-//		if (node instanceof TclStatement) {
-//			TclStatement statement = (TclStatement) node;
-//			List expressions = statement.getExpressions();
-//			int len = expressions.size();
-//			boolean first = false;
-//			ASTNode completionNode = null;
-//			String completionToken = null;
-//			for (int i = 0; i < len; ++i) {
-//				ASTNode n = (ASTNode) expressions.get(i);
-//				if (n.sourceStart() <= position && n.sourceEnd() >= position) {
-//					if (i == 0) {
-//						first = true;
-//					}
-//					completionNode = n;
-//				}
-//			}
-//			if (completionNode instanceof SimpleReference) {
-//				completionToken = ((SimpleReference) completionNode).getName();
-//				if( completionToken.indexOf("[") != -1 ) {
-//					processInnerExecuteExpression(inNode, position,
-//							completionNode, completionToken);
-//				}
-//			} 
-//			// Map Variable
-//			if( completionToken != null && completionToken.indexOf('(') != -1 ) { 
-//				if (position < completionNode.sourceStart() + completionToken.indexOf('(')) {
-//					completionToken = completionToken.substring(0, completionToken.indexOf('(') );
-//				} else {
-//					completionToken = completionToken.substring(completionToken.indexOf('(') + 1,  
-//							completionToken.length() - 1);				
-//				}
-//			}
-//			if (completionNode instanceof TclBlockExpression) {
-//				TclBlockExpression block = (TclBlockExpression) completionNode;
-//				//try {
-//					List s = block.parseBlock();
-//					if (s != null) {
-//						int slen = s.size();
-//						for (int u = 0; u < slen; ++u) {
-//							ASTNode n = (ASTNode) s.get(u);							
-//							if (n != null && n.sourceStart() <= position && n.sourceEnd() >= position) {
-//								parseBlockStatements(n, inNode, position);
-//							}
-//						}
-//					}
-//					handleNotInElement(inNode, position);
-//				/*} catch (ANTLRException e) {
-//					if (DLTKCore.DEBUG_PARSER)
-//						e.printStackTrace();
-//				}*/
-//			}
-//			if (completionNode instanceof StringLiteral) {
-//				int pos = position - completionNode.sourceStart();
-//				
-//				String content = ((StringLiteral)completionNode).getValue();
-//				if( content.indexOf("[") != -1 ) {
-//					processInnerExecuteExpression(inNode, position,
-//							completionNode, content);
-//				}
-//				
-//				SimpleReference tok = TclParseUtils.findVariableFromString((StringLiteral) completionNode, pos);
-//				if (tok != null) {
-//					this.assistNodeParent = inNode;
-//					ASTNode nde = new SelectionOnVariable(tok.getName(), tok, node, inNode);
-//					if( nde != null ) {
-//						throw new SelectionNodeFound(nde);
-//					}
-//				}
-//			}
-//			if (completionNode instanceof TclExecuteExpression) {
-//				TclExecuteExpression expr = (TclExecuteExpression) completionNode;
-//				List exprs = expr.parseExpression();
-//				for (int i = 0; i < exprs.size(); ++i) {
-//					ASTNode n = (ASTNode) exprs.get(i);
-//					if (n.sourceStart() <= position && n.sourceEnd() >= position) {
-//						parseBlockStatements(n, expr, position);
-//					}
-//				}
-//				handleNotInElement(expr, position);
-//			}
-//			String var = TclParseUtils.returnVariableCheck(statement, position);
-//			if (( completionToken != null && completionToken.startsWith("$") ) || var != null ) {
-//				this.assistNodeParent = inNode;
-//				if( var != null ) {					
-////					ASTNode nde = new SelectionOnVariable("$" + var, statement, node, inNode);
-////					throw new SelectionNodeFound(nde);
-//					ASTNode nde = new SelectionOnAST(statement);
-//					throw new SelectionNodeFound(nde);
-//				}
-//				else {
-//					ASTNode nde = new SelectionOnVariable(completionToken, completionNode, node, inNode);
-//					throw new SelectionNodeFound(nde);
-//				}
-//			} else {				
-//				if( completionToken != null && completionNode != null ) {
-//					ASTNode nde = new SelectionOnKeywordOrFunction(completionToken, completionNode, node);
-//					this.assistNodeParent = inNode;
-//					throw new SelectionNodeFound(nde);	
-//				}
-//			}
-//		} else if (node instanceof MethodDeclaration) {
-//			MethodDeclaration method = (MethodDeclaration) node;
-//			List statements = method.getStatements();
-//			boolean inStatement = false;
-//			if (method.getNameStart() <= position && method.getNameEnd() >= position) {
-//				ASTNode nde = new SelectionOnAST(method);
-//				this.assistNodeParent = inNode;
-//				throw new SelectionNodeFound(nde);
-//			}
-//			if (statements != null) {
-//				int length = statements.size();
-//				for (int i = 0; i < length; i++) {
-//					ASTNode nde = (ASTNode) statements.get(i);
-//					if (nde.sourceStart() <= position && nde.sourceEnd() >= position) {
-//						inStatement = true;
-//						parseBlockStatements(nde, method, position);
-//					}
-//				}
-//			}			
-//			if (!inStatement) {
-//				this.handleNotInElement(method, position);
-//			}
-//		}
+		// /**
+		// * This is possible function completion.
+		// */
+		// if (node instanceof TclStatement) {
+		// TclStatement statement = (TclStatement) node;
+		// List expressions = statement.getExpressions();
+		// int len = expressions.size();
+		// boolean first = false;
+		// ASTNode completionNode = null;
+		// String completionToken = null;
+		// for (int i = 0; i < len; ++i) {
+		// ASTNode n = (ASTNode) expressions.get(i);
+		// if (n.sourceStart() <= position && n.sourceEnd() >= position) {
+		// if (i == 0) {
+		// first = true;
+		// }
+		// completionNode = n;
+		// }
+		// }
+		// if (completionNode instanceof SimpleReference) {
+		// completionToken = ((SimpleReference) completionNode).getName();
+		// if( completionToken.indexOf("[") != -1 ) {
+		// processInnerExecuteExpression(inNode, position,
+		// completionNode, completionToken);
+		// }
+		// }
+		// // Map Variable
+		// if( completionToken != null && completionToken.indexOf('(') != -1 ) {
+		// if (position < completionNode.sourceStart() +
+		// completionToken.indexOf('(')) {
+		// completionToken = completionToken.substring(0,
+		// completionToken.indexOf('(') );
+		// } else {
+		// completionToken =
+		// completionToken.substring(completionToken.indexOf('(') + 1,
+		// completionToken.length() - 1);
+		// }
+		// }
+		// if (completionNode instanceof TclBlockExpression) {
+		// TclBlockExpression block = (TclBlockExpression) completionNode;
+		// //try {
+		// List s = block.parseBlock();
+		// if (s != null) {
+		// int slen = s.size();
+		// for (int u = 0; u < slen; ++u) {
+		// ASTNode n = (ASTNode) s.get(u);
+		// if (n != null && n.sourceStart() <= position && n.sourceEnd() >=
+		// position) {
+		// parseBlockStatements(n, inNode, position);
+		// }
+		// }
+		// }
+		// handleNotInElement(inNode, position);
+		// /*} catch (ANTLRException e) {
+		// if (DLTKCore.DEBUG_PARSER)
+		// e.printStackTrace();
+		// }*/
+		// }
+		// if (completionNode instanceof StringLiteral) {
+		// int pos = position - completionNode.sourceStart();
+		//				
+		// String content = ((StringLiteral)completionNode).getValue();
+		// if( content.indexOf("[") != -1 ) {
+		// processInnerExecuteExpression(inNode, position,
+		// completionNode, content);
+		// }
+		//				
+		// SimpleReference tok =
+		// TclParseUtils.findVariableFromString((StringLiteral) completionNode,
+		// pos);
+		// if (tok != null) {
+		// this.assistNodeParent = inNode;
+		// ASTNode nde = new SelectionOnVariable(tok.getName(), tok, node,
+		// inNode);
+		// if( nde != null ) {
+		// throw new SelectionNodeFound(nde);
+		// }
+		// }
+		// }
+		// if (completionNode instanceof TclExecuteExpression) {
+		// TclExecuteExpression expr = (TclExecuteExpression) completionNode;
+		// List exprs = expr.parseExpression();
+		// for (int i = 0; i < exprs.size(); ++i) {
+		// ASTNode n = (ASTNode) exprs.get(i);
+		// if (n.sourceStart() <= position && n.sourceEnd() >= position) {
+		// parseBlockStatements(n, expr, position);
+		// }
+		// }
+		// handleNotInElement(expr, position);
+		// }
+		// String var = TclParseUtils.returnVariableCheck(statement, position);
+		// if (( completionToken != null && completionToken.startsWith("$") ) ||
+		// var != null ) {
+		// this.assistNodeParent = inNode;
+		// if( var != null ) {
+		// // ASTNode nde = new SelectionOnVariable("$" + var, statement, node,
+		// inNode);
+		// // throw new SelectionNodeFound(nde);
+		// ASTNode nde = new SelectionOnAST(statement);
+		// throw new SelectionNodeFound(nde);
+		// }
+		// else {
+		// ASTNode nde = new SelectionOnVariable(completionToken,
+		// completionNode, node, inNode);
+		// throw new SelectionNodeFound(nde);
+		// }
+		// } else {
+		// if( completionToken != null && completionNode != null ) {
+		// ASTNode nde = new SelectionOnKeywordOrFunction(completionToken,
+		// completionNode, node);
+		// this.assistNodeParent = inNode;
+		// throw new SelectionNodeFound(nde);
+		// }
+		// }
+		// } else if (node instanceof MethodDeclaration) {
+		// MethodDeclaration method = (MethodDeclaration) node;
+		// List statements = method.getStatements();
+		// boolean inStatement = false;
+		// if (method.getNameStart() <= position && method.getNameEnd() >=
+		// position) {
+		// ASTNode nde = new SelectionOnAST(method);
+		// this.assistNodeParent = inNode;
+		// throw new SelectionNodeFound(nde);
+		// }
+		// if (statements != null) {
+		// int length = statements.size();
+		// for (int i = 0; i < length; i++) {
+		// ASTNode nde = (ASTNode) statements.get(i);
+		// if (nde.sourceStart() <= position && nde.sourceEnd() >= position) {
+		// inStatement = true;
+		// parseBlockStatements(nde, method, position);
+		// }
+		// }
+		// }
+		// if (!inStatement) {
+		// this.handleNotInElement(method, position);
+		// }
+		// }
 	}
 
-	
+	public ModuleDeclaration getModule() {
+		return module;
+	}
 }