diff --git a/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/editor/CDTBasedTextEditor.java b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/editor/CDTBasedTextEditor.java
index 01ce4f5..fd4a440 100644
--- a/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/editor/CDTBasedTextEditor.java
+++ b/org.eclipse.photran.cdtinterface/src/org/eclipse/photran/internal/cdtinterface/ui/editor/CDTBasedTextEditor.java
@@ -126,13 +126,17 @@
     {
         super.editorContextMenuAboutToShow(menu);
         
-        textSearchGroup.fillContextMenu(menu);
+        if (textSearchGroup != null) {
+            textSearchGroup.fillContextMenu(menu);
+        }
     }
     
     @Override
     public void dispose()
     {
-        textSearchGroup.dispose();
+        if (textSearchGroup != null) {
+            textSearchGroup.dispose();
+        }
         super.dispose();
     }
 
diff --git a/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77
new file mode 100644
index 0000000..d36d3f4
--- /dev/null
+++ b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77
@@ -0,0 +1,4 @@
+      program test
+      include "basic-include.f"
+      
+      end program
diff --git a/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77.result b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77.result
new file mode 100644
index 0000000..d36d3f4
--- /dev/null
+++ b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77.result
@@ -0,0 +1,4 @@
+      program test
+      include "basic-include.f"
+      
+      end program
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include.f77
diff --git a/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77
new file mode 100644
index 0000000..51f0c4d
--- /dev/null
+++ b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77
@@ -0,0 +1,4 @@
+      program test!<<<<<START
+      
+      
+      end program!<<<<<END
diff --git a/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77.result b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77.result
new file mode 100644
index 0000000..51f0c4d
--- /dev/null
+++ b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77.result
@@ -0,0 +1,4 @@
+      program test!<<<<<START
+      
+      
+      end program!<<<<<END
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file1.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file1.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file1.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file1.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file2.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file2.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file2.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-file2.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77.result b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77.result
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77.result
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test1-two-includes-main.f77.result
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-five.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-five.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-five.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-five.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-four.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-four.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-four.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-four.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-one.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-one.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-one.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-one.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-three.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-three.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-three.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-three.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-two.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-two.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-two.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-file-to-include-two.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77 b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77.result b/org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77.result
similarity index 100%
rename from org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77.result
rename to org.eclipse.photran.core.vpg.tests.failing/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/test2-lot-includes-main-file.f77.result
diff --git a/org.eclipse.photran.core.vpg.tests/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/FortranIncludeFixedFormTestCase.java b/org.eclipse.photran.core.vpg.tests.failing/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/failing/FortranIncludeFixedFormTestCase.java
similarity index 96%
rename from org.eclipse.photran.core.vpg.tests/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/FortranIncludeFixedFormTestCase.java
rename to org.eclipse.photran.core.vpg.tests.failing/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/failing/FortranIncludeFixedFormTestCase.java
index 9be4d5f..0b04696 100644
--- a/org.eclipse.photran.core.vpg.tests/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/FortranIncludeFixedFormTestCase.java
+++ b/org.eclipse.photran.core.vpg.tests.failing/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/failing/FortranIncludeFixedFormTestCase.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    UIUC - Initial API and implementation
  *******************************************************************************/
-package org.eclipse.photran.internal.tests.lexer.preprocessor.fortran_include;
+package org.eclipse.photran.internal.tests.lexer.preprocessor.fortran_include.failing;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -20,7 +20,7 @@
 import org.eclipse.photran.core.IFortranAST;
 import org.eclipse.photran.internal.core.refactoring.infrastructure.SourcePrinter;
 import org.eclipse.photran.internal.core.vpg.PhotranVPG;
-import org.eclipse.photran.internal.tests.Activator;
+import org.eclipse.photran.internal.tests.failing.Activator;
 import org.eclipse.photran.internal.tests.PhotranWorkspaceTestCase;
 
 /**
diff --git a/org.eclipse.photran.core.vpg.tests/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/FortranIncludeFixedFormTestSuite.java b/org.eclipse.photran.core.vpg.tests.failing/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/failing/FortranIncludeFixedFormTestSuite.java
similarity index 97%
rename from org.eclipse.photran.core.vpg.tests/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/FortranIncludeFixedFormTestSuite.java
rename to org.eclipse.photran.core.vpg.tests.failing/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/failing/FortranIncludeFixedFormTestSuite.java
index 50fcc91..802bab6 100644
--- a/org.eclipse.photran.core.vpg.tests/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/FortranIncludeFixedFormTestSuite.java
+++ b/org.eclipse.photran.core.vpg.tests.failing/src/org/eclipse/photran/internal/tests/lexer/preprocessor/fortran_include/failing/FortranIncludeFixedFormTestSuite.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    UIUC - Initial API and implementation
  *******************************************************************************/
-package org.eclipse.photran.internal.tests.lexer.preprocessor.fortran_include;
+package org.eclipse.photran.internal.tests.lexer.preprocessor.fortran_include.failing;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77 b/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77
deleted file mode 100644
index ee3e1e5..0000000
--- a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77
+++ /dev/null
@@ -1,4 +0,0 @@
-     program test
-     include "basic-include.f"
-     
-     end program
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77.result b/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77.result
deleted file mode 100644
index ee3e1e5..0000000
--- a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/basic-include-main.f77.result
+++ /dev/null
@@ -1,4 +0,0 @@
-     program test
-     include "basic-include.f"
-     
-     end program
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77 b/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77
deleted file mode 100644
index 620d163..0000000
--- a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77
+++ /dev/null
@@ -1,4 +0,0 @@
-     program test!<<<<<START
-     
-     
-     end program!<<<<<END
diff --git a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77.result b/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77.result
deleted file mode 100644
index 620d163..0000000
--- a/org.eclipse.photran.core.vpg.tests/fixed-form-test-code/fixed-form-lexer/fortran-include-stmt/no-include.f77.result
+++ /dev/null
@@ -1,4 +0,0 @@
-     program test!<<<<<START
-     
-     
-     end program!<<<<<END
diff --git a/org.eclipse.photran.core.vpg/lexer/org/eclipse/photran/internal/core/lexer/preprocessor/fortran_include/PreprocessingFixedFormLexerPhase1.java b/org.eclipse.photran.core.vpg/lexer/org/eclipse/photran/internal/core/lexer/preprocessor/fortran_include/PreprocessingFixedFormLexerPhase1.java
index 252119b..18df808 100644
--- a/org.eclipse.photran.core.vpg/lexer/org/eclipse/photran/internal/core/lexer/preprocessor/fortran_include/PreprocessingFixedFormLexerPhase1.java
+++ b/org.eclipse.photran.core.vpg/lexer/org/eclipse/photran/internal/core/lexer/preprocessor/fortran_include/PreprocessingFixedFormLexerPhase1.java
@@ -10,9 +10,7 @@
  *******************************************************************************/
 package org.eclipse.photran.internal.core.lexer.preprocessor.fortran_include;
 
-
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.Reader;
 
 import org.eclipse.core.resources.IFile;
diff --git a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/SubprogramTypeCollector.java b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/SubprogramTypeCollector.java
index 2029724..1d4476e 100644
--- a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/SubprogramTypeCollector.java
+++ b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/SubprogramTypeCollector.java
@@ -74,16 +74,23 @@
             int paramCount = 0;
             for (ASTSubroutineParNode param: subParams) {
                 Token tmpToken = param.getVariableName();
-                String paramText = tmpToken.getText();
+                String paramText;
+                if (tmpToken != null) {
+                    paramText = tmpToken.getText();
+                } else {
+                    paramText = "*"; //$NON-NLS-1$
+                }
                 if (paramCount>0)
                     fullId.append(',');
                 fullId.append(paramText);
                 //
-                Definition varDef = bindUniquely(tmpToken);
-                if (varDef != null) {
-                    if (varDef.isOptional()) {
-                        fullId.append('=');
-                        fullId.append(paramText);
+                if (tmpToken != null) {
+                    Definition varDef = bindUniquely(tmpToken);
+                    if (varDef != null) {
+                        if (varDef.isOptional()) {
+                            fullId.append('=');
+                            fullId.append(paramText);
+                        }
                     }
                 }
                 paramCount=paramCount+1;
diff --git a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/IntroduceCallTreeRefactoring.java b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/IntroduceCallTreeRefactoring.java
index c50979c..d20d233 100644
--- a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/IntroduceCallTreeRefactoring.java
+++ b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/IntroduceCallTreeRefactoring.java
@@ -39,7 +39,7 @@
             for (IFile file : selectedFiles) {
                 IFortranAST ast = vpg.acquirePermanentAST(file);
                 if (ast == null) {
-                    status.addError("One of the selected files (" + file.getName() +") cannot be parsed.");
+                    status.addError(Messages.bind(Messages.IntroduceCallTreeRefactoring_CannotParse, file.getName()));
                 } else {
                     makeChangesTo(file, ast, status, pm);
                     vpg.releaseAST(file);
@@ -82,7 +82,7 @@
                         }
                         String line = line_int.toString();
                         // Adds entry to the calls buffer of the scope.
-                        callStmtsOfScope.add(((ASTCallStmtNode)node).getSubroutineName().getText() + " (on line <" +line+">)");
+                        callStmtsOfScope.add(Messages.bind(Messages.IntroduceCallTreeRefactoring_OnLine, ((ASTCallStmtNode)node).getSubroutineName().getText() , line));
                     }
                 }
                 if((hasCall== true) && (scopeChanged != null)){
@@ -97,21 +97,21 @@
                     tab = getBlankCharacters(blank_characters, tab, headerStmt);
                     String name = ""; //$NON-NLS-1$
                     if(scopeChanged.isMainProgram()){
-                        name = " in program ";
+                        name = " in program "; //$NON-NLS-1$
                     }if(scopeChanged.isModule()){
-                        name = " in module ";
+                        name = " in module "; //$NON-NLS-1$
                     }if(scopeChanged.isSubprogram()){
-                        name = " in subroutine ";
+                        name = " in subroutine "; //$NON-NLS-1$
                     }
                     // Prints the call tree of each subroutine.
-                    firstToken.setText("! " + "Calls" + name + scopeChanged.getName().toUpperCase()+": \n"); //$NON-NLS-1$
+                    firstToken.setText("! " + "Calls" + name + scopeChanged.getName().toUpperCase()+": \n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                     for(int i=0; i<callStmtsOfScope.size(); i++){
                         String arrow = "="; //$NON-NLS-1$
                         for(int j=0; j<i; j++){
                             arrow += "="; //$NON-NLS-1$
                         }
                         arrow += ">"; //$NON-NLS-1$
-                        firstToken.setText(firstToken.getText()+ tab + "! " + arrow + " " + callStmtsOfScope.get(i).toString() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+                        firstToken.setText(firstToken.getText()+ tab + "! " + arrow + " " + callStmtsOfScope.get(i).toString() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                     }
                     firstToken.setText(firstToken.getText()+tab + firstTokenText.trim());
                 }
@@ -191,6 +191,6 @@
 
     @Override
     public String getName() {
-        return "Introduce Call Tree";
+        return Messages.IntroduceCallTreeRefactoring_Name;
     }
 }
diff --git a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/Messages.java b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/Messages.java
index ec7132c..b103020 100644
--- a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/Messages.java
+++ b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/Messages.java
@@ -310,6 +310,12 @@
 
     public static String InterchangeLoopsRefactoring_UncheckedTransNotGuaranteedToPreserve;
 
+    public static String IntroduceCallTreeRefactoring_CannotParse;
+
+    public static String IntroduceCallTreeRefactoring_Name;
+
+    public static String IntroduceCallTreeRefactoring_OnLine;
+
     public static String IntroImplicitNoneRefactoring_Name;
 
     public static String IntroImplicitNoneRefactoring_SelectedFileCannotBeParsed;
diff --git a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/VariableCaseRefactoring.java b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/VariableCaseRefactoring.java
index 25c5b85..4268b8d 100644
--- a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/VariableCaseRefactoring.java
+++ b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/VariableCaseRefactoring.java
@@ -30,7 +30,6 @@
 import org.eclipse.photran.internal.core.parser.ASTObjectNameNode;
 import org.eclipse.photran.internal.core.parser.ASTSubroutineParNode;
 import org.eclipse.photran.internal.core.parser.ASTVarOrFnRefNode;
-import org.eclipse.photran.internal.core.parser.GenericASTVisitor;
 import org.eclipse.photran.internal.core.parser.IASTNode;
 import org.eclipse.photran.internal.core.refactoring.infrastructure.FortranResourceRefactoring;
 
diff --git a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/messages.properties b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/messages.properties
index 6cd2a42..7675024 100644
--- a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/messages.properties
+++ b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/refactoring/messages.properties
@@ -93,6 +93,9 @@
 InterchangeLoopsRefactoring_Name=Interchange Loops (Unchecked)
 InterchangeLoopsRefactoring_SelectTwoPerfNextedLoops=Please select two perfectly-nested loops to refactor.
 InterchangeLoopsRefactoring_UncheckedTransNotGuaranteedToPreserve=WARNING: This is an UNCHECKED TRANSFORMATION and is NOT guaranteed to preserve behavior.  Proceed at your own risk.
+IntroduceCallTreeRefactoring_CannotParse=One of the selected files ({0}) cannot be parsed.
+IntroduceCallTreeRefactoring_Name=Introduce Call Tree
+IntroduceCallTreeRefactoring_OnLine={0} (on line <{1}>)
 IntroImplicitNoneRefactoring_Name=Introduce Implicit None
 IntroImplicitNoneRefactoring_SelectedFileCannotBeParsed=One of the selected files ({0}) cannot be parsed.
 KeywordCaseRefactoring_Name=Change Keyword Case
diff --git a/org.eclipse.photran.ui.vpg.preprocessor.c/src/org/eclipse/photran/internal/ui/actions/DisplayPreprocessedSource.java b/org.eclipse.photran.ui.vpg.preprocessor.c/src/org/eclipse/photran/internal/ui/actions/DisplayPreprocessedSource.java
index 6fa1fbe..8a0004e 100644
--- a/org.eclipse.photran.ui.vpg.preprocessor.c/src/org/eclipse/photran/internal/ui/actions/DisplayPreprocessedSource.java
+++ b/org.eclipse.photran.ui.vpg.preprocessor.c/src/org/eclipse/photran/internal/ui/actions/DisplayPreprocessedSource.java
@@ -43,24 +43,33 @@
             IDocument doc = getFortranEditor().getIDocument();
             Reader in = new StringReader(doc.get());
             Reader cppIn = new CPreprocessingReader(getFortranEditor().getIFile(), null, in);
-            
-            File tempFile = File.createTempFile(
-            	"tmp", //$NON-NLS-1$
-            	isFixedForm ? ".f" : ".f90"); //$NON-NLS-1$ //$NON-NLS-2$
-            tempFile.deleteOnExit();
-            PrintStream out =
-            	new PrintStream(
-            		new BufferedOutputStream(
-            			new FileOutputStream(tempFile)));
-            for (int c = cppIn.read(); c != -1; c = cppIn.read())
-            	out.print((char)c);
-            out.close();
+            try
+            {
+                File tempFile = File.createTempFile("tmp", //$NON-NLS-1$
+                    isFixedForm ? ".f" : ".f90"); //$NON-NLS-1$ //$NON-NLS-2$
+                tempFile.deleteOnExit();
+                PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream(
+                    tempFile)));
+                try
+                {
+                    for (int c = cppIn.read(); c != -1; c = cppIn.read())
+                        out.print((char)c);
+                }
+                finally
+                {
+                    out.close();
+                }
 
-            IDE.openEditor(
-            		Workbench.getInstance().getActiveWorkbenchWindow().getActivePage(),
-            		tempFile.toURI(),
-            		FortranEditor.EDITOR_ID,
-            		true);
+                IDE.openEditor(
+                        Workbench.getInstance().getActiveWorkbenchWindow().getActivePage(),
+                        tempFile.toURI(),
+                        FortranEditor.EDITOR_ID,
+                        true);
+            }
+            finally
+            {
+                cppIn.close();
+            }
         }
         catch (Exception e)
         {
diff --git a/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/cdt/CDTDB.java b/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/cdt/CDTDB.java
index 044dcee..e04be0b 100644
--- a/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/cdt/CDTDB.java
+++ b/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/cdt/CDTDB.java
@@ -188,11 +188,21 @@
     {
         File tempFile = File.createTempFile("rephraser-tmp", "db"); //$NON-NLS-1$ //$NON-NLS-2$
         tempFile.deleteOnExit();
-        FileChannel from = new FileInputStream(orig).getChannel();
-        FileChannel to = new FileOutputStream(tempFile).getChannel();
-        to.transferFrom(from, 0, from.size());
-        from.close();
-        to.close();
+        FileInputStream fromFile = new FileInputStream(orig);
+        FileOutputStream toFile = new FileOutputStream(tempFile);
+        FileChannel from = fromFile.getChannel();
+        FileChannel to = toFile.getChannel();
+        try
+        {
+            to.transferFrom(from, 0, from.size());
+        }
+        finally
+        {
+            to.close();
+            from.close();
+            toFile.close();
+            fromFile.close();
+        }
         return tempFile;
     }
     
diff --git a/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/ram/RAMDB.java b/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/ram/RAMDB.java
index 268a996..a3549e4 100644
--- a/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/ram/RAMDB.java
+++ b/org.eclipse.rephraserengine.core/src/org/eclipse/rephraserengine/core/vpg/db/ram/RAMDB.java
@@ -207,11 +207,21 @@
     {
         File tempFile = File.createTempFile("rephraser-tmp", "db"); //$NON-NLS-1$ //$NON-NLS-2$
         tempFile.deleteOnExit();
-        FileChannel from = new FileInputStream(orig).getChannel();
-        FileChannel to = new FileOutputStream(tempFile).getChannel();
-        to.transferFrom(from, 0, from.size());
-        from.close();
-        to.close();
+        FileInputStream fromFile = new FileInputStream(orig);
+        FileOutputStream toFile = new FileOutputStream(tempFile);
+        FileChannel from = fromFile.getChannel();
+        FileChannel to = toFile.getChannel();
+        try
+        {
+            to.transferFrom(from, 0, from.size());
+        }
+        finally
+        {
+            to.close();
+            from.close();
+            toFile.close();
+            fromFile.close();
+        }
         return tempFile;
     }
 
diff --git a/org.eclipse.rephraserengine.testing.junit3/src/org/eclipse/rephraserengine/testing/junit3/GeneralTestSuiteFromFiles.java b/org.eclipse.rephraserengine.testing.junit3/src/org/eclipse/rephraserengine/testing/junit3/GeneralTestSuiteFromFiles.java
index 01c77cc..f9b9fb5 100644
--- a/org.eclipse.rephraserengine.testing.junit3/src/org/eclipse/rephraserengine/testing/junit3/GeneralTestSuiteFromFiles.java
+++ b/org.eclipse.rephraserengine.testing.junit3/src/org/eclipse/rephraserengine/testing/junit3/GeneralTestSuiteFromFiles.java
@@ -177,11 +177,18 @@
             Set<String> result = new HashSet<String>();
 
             BufferedReader r = new BufferedReader(new FileReader(list));
-            for (String line = r.readLine(); line != null; line = r.readLine())
+            try
             {
-                line = line.trim();
-                if (!line.equals("") && !line.startsWith("#")) //$NON-NLS-1$ //$NON-NLS-2$
-                    result.add(line);
+                for (String line = r.readLine(); line != null; line = r.readLine())
+                {
+                    line = line.trim();
+                    if (!line.equals("") && !line.startsWith("#")) //$NON-NLS-1$ //$NON-NLS-2$
+                        result.add(line);
+                }
+            }
+            finally
+            {
+                r.close();
             }
 
             return result;
