sh: Further specialize in parser.

Prevents useless casts.

Change-Id: I8c693e24a01dd9a65de18766daed3ded1d8bc8ad
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java b/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java
index 9fbb004..1f36fc3 100644
--- a/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java
+++ b/plugins/org.eclipse.dltk.sh.core/src/org/eclipse/dltk/sh/internal/core/parser/ShellScriptSourceParser.java
@@ -19,7 +19,6 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.eclipse.dltk.ast.declarations.Declaration;
 import org.eclipse.dltk.ast.declarations.FieldDeclaration;
 import org.eclipse.dltk.ast.declarations.MethodDeclaration;
 import org.eclipse.dltk.ast.declarations.ModuleDeclaration;
@@ -41,7 +40,7 @@
 		Set<String> functionNames = new HashSet<>();
 		Set<String> varNames = new HashSet<>();
 		MethodDeclaration mDeclaration = null;
-		Stack<Declaration> tmp = new Stack<>();
+		Stack<MethodDeclaration> tmp = new Stack<>();
 		boolean isPrevLnContinued = false;
 
 		try (BufferedReader bReader = new BufferedReader(reader)) {
@@ -77,7 +76,7 @@
 					tmp.push(mDeclaration);
 					model.addFunction(mDeclaration);
 				} else if (line.trim().equals("}") && mDeclaration != null && !tmp.isEmpty()) {
-					mDeclaration = (MethodDeclaration) tmp.pop();
+					mDeclaration = tmp.pop();
 					mDeclaration.setEnd(lineStart + line.length());
 				}
 				Pattern assignmentPattern = Pattern.compile("(^|\\W)\\w*=");
@@ -103,7 +102,7 @@
 					// end of if statement
 				} else if (line.trim().equals("fi")) {
 					if (!tmp.isEmpty()) {
-						mDeclaration = (MethodDeclaration) tmp.pop();
+						mDeclaration = tmp.pop();
 						mDeclaration.setEnd(lineStart + line.indexOf("fi"));
 					}
 
@@ -126,7 +125,7 @@
 					// done statement encountered
 				} else if (line.contains("done ") || line.trim().equals("done")) {
 					if (!tmp.isEmpty()) {
-						mDeclaration = (MethodDeclaration) tmp.pop();
+						mDeclaration = tmp.pop();
 						mDeclaration.setEnd(lineStart + line.indexOf("done"));
 					}
 
@@ -149,7 +148,7 @@
 					// end of case statement
 				} else if (line.trim().equals("esac")) {
 					if (!tmp.isEmpty()) {
-						mDeclaration = (MethodDeclaration) tmp.pop();
+						mDeclaration = tmp.pop();
 						mDeclaration.setEnd(lineStart + line.indexOf("esac"));
 					}
 				}
@@ -164,14 +163,14 @@
 					model.addStatement(mDeclaration);
 				} else if (line.charAt(line.length() - 1) == '\\' && isPrevLnContinued) {
 					if (!tmp.isEmpty()) {
-						mDeclaration = (MethodDeclaration) tmp.pop();
+						mDeclaration = tmp.pop();
 						mDeclaration.setEnd(lineStart + line.indexOf('\\'));
 						tmp.push(mDeclaration);
 					}
 				} else if (isPrevLnContinued) {
 					isPrevLnContinued = false;
 					if (!tmp.isEmpty()) {
-						mDeclaration = (MethodDeclaration) tmp.pop();
+						mDeclaration = tmp.pop();
 						mDeclaration.setEnd(lineStart + line.length() - 2);
 					}
 				}