From bcce6e8d01a0e842483270099a73310cb46dfc88 Mon Sep 17 00:00:00 2001
From: Matei Zaharia <matei@eecs.berkeley.edu>
Date: Tue, 31 May 2011 17:31:51 -0700
Subject: [PATCH] Various work to use the 2.9 interpreter

---
 project/build/SparkProject.scala              |    2 +-
 repl/lib/jline.jar                            |  Bin 87543 -> 0 bytes
 repl/lib/scala-jline.jar                      |  Bin 0 -> 158463 bytes
 repl/src/main/scala/spark/repl/Main.scala     |    8 +-
 .../spark/repl/SparkCompletionOutput.scala    |   92 --
 .../main/scala/spark/repl/SparkHelper.scala   |    5 +
 .../main/scala/spark/repl/SparkILoop.scala    |  990 ++++++++++++
 .../main/scala/spark/repl/SparkIMain.scala    | 1131 +++++++++++++
 .../scala/spark/repl/SparkISettings.scala     |   63 +
 .../main/scala/spark/repl/SparkImports.scala  |  196 +++
 .../spark/repl/SparkInteractiveReader.scala   |   60 -
 .../scala/spark/repl/SparkInterpreter.scala   | 1395 -----------------
 .../spark/repl/SparkInterpreterLoop.scala     |  662 --------
 .../spark/repl/SparkInterpreterSettings.scala |  112 --
 ...etion.scala => SparkJLineCompletion.scala} |  266 ++--
 .../scala/spark/repl/SparkJLineReader.scala   |   81 +-
 .../spark/repl/SparkMemberHandlers.scala      |  207 +++
 .../scala/spark/repl/SparkSimpleReader.scala  |   33 -
 .../src/test/scala/spark/repl/ReplSuite.scala |    2 +-
 19 files changed, 2805 insertions(+), 2500 deletions(-)
 delete mode 100644 repl/lib/jline.jar
 create mode 100644 repl/lib/scala-jline.jar
 delete mode 100644 repl/src/main/scala/spark/repl/SparkCompletionOutput.scala
 create mode 100644 repl/src/main/scala/spark/repl/SparkHelper.scala
 create mode 100644 repl/src/main/scala/spark/repl/SparkILoop.scala
 create mode 100644 repl/src/main/scala/spark/repl/SparkIMain.scala
 create mode 100644 repl/src/main/scala/spark/repl/SparkISettings.scala
 create mode 100644 repl/src/main/scala/spark/repl/SparkImports.scala
 delete mode 100644 repl/src/main/scala/spark/repl/SparkInteractiveReader.scala
 delete mode 100644 repl/src/main/scala/spark/repl/SparkInterpreter.scala
 delete mode 100644 repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala
 delete mode 100644 repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala
 rename repl/src/main/scala/spark/repl/{SparkCompletion.scala => SparkJLineCompletion.scala} (60%)
 create mode 100644 repl/src/main/scala/spark/repl/SparkMemberHandlers.scala
 delete mode 100644 repl/src/main/scala/spark/repl/SparkSimpleReader.scala

diff --git a/project/build/SparkProject.scala b/project/build/SparkProject.scala
index 469dd93ef1..7ebd92fde6 100644
--- a/project/build/SparkProject.scala
+++ b/project/build/SparkProject.scala
@@ -10,7 +10,7 @@ class SparkProject(info: ProjectInfo) extends ParentProject(info) with IdeaProje
 
   lazy val core = project("core", "Spark Core", new CoreProject(_))
 
-//  lazy val repl = project("repl", "Spark REPL", new ReplProject(_), core)
+  lazy val repl = project("repl", "Spark REPL", new ReplProject(_), core)
 
   lazy val examples = project("examples", "Spark Examples", new ExamplesProject(_), core)
 
diff --git a/repl/lib/jline.jar b/repl/lib/jline.jar
deleted file mode 100644
index 6ed67faab68b4ba09e264bdaaaa610971479438b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 87543
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

diff --git a/repl/lib/scala-jline.jar b/repl/lib/scala-jline.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2f18c95cdd7aa00e103e80f2c589ecd715030c70
GIT binary patch
literal 158463
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
A6#xJL

literal 0
HcmV?d00001

diff --git a/repl/src/main/scala/spark/repl/Main.scala b/repl/src/main/scala/spark/repl/Main.scala
index f00df5aa58..b4a2bb05f9 100644
--- a/repl/src/main/scala/spark/repl/Main.scala
+++ b/repl/src/main/scala/spark/repl/Main.scala
@@ -3,14 +3,14 @@ package spark.repl
 import scala.collection.mutable.Set
 
 object Main {
-  private var _interp: SparkInterpreterLoop = null
+  private var _interp: SparkILoop = null
   
   def interp = _interp
   
-  private[repl] def interp_=(i: SparkInterpreterLoop) { _interp = i }
+  private[repl] def interp_=(i: SparkILoop) { _interp = i }
   
   def main(args: Array[String]) {
-    _interp = new SparkInterpreterLoop
-    _interp.main(args)
+    _interp = new SparkILoop
+    _interp.process(args)
   }
 }
diff --git a/repl/src/main/scala/spark/repl/SparkCompletionOutput.scala b/repl/src/main/scala/spark/repl/SparkCompletionOutput.scala
deleted file mode 100644
index 5ac46e3412..0000000000
--- a/repl/src/main/scala/spark/repl/SparkCompletionOutput.scala
+++ /dev/null
@@ -1,92 +0,0 @@
-/* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
- * @author Paul Phillips
- */
-
-package spark.repl
-
-import scala.tools.nsc
-import scala.tools.nsc._
-import scala.tools.nsc.interpreter
-import scala.tools.nsc.interpreter._
-
-/** This has a lot of duplication with other methods in Symbols and Types,
- *  but repl completion utility is very sensitive to precise output.  Best
- *  thing would be to abstract an interface for how such things are printed,
- *  as is also in progress with error messages.
- */
-trait SparkCompletionOutput {
-  self: SparkCompletion =>
-  
-  import global._
-  import definitions.{ NothingClass, AnyClass, isTupleType, isFunctionType, isRepeatedParamType }
-  
-  /** Reducing fully qualified noise for some common packages.
-   */
-  val typeTransforms = List(
-    "java.lang." -> "",
-    "scala.collection.immutable." -> "immutable.",
-    "scala.collection.mutable." -> "mutable.",
-    "scala.collection.generic." -> "generic."
-  )
-    
-  def quietString(tp: String): String =
-    typeTransforms.foldLeft(tp) {
-      case (str, (prefix, replacement)) =>
-        if (str startsWith prefix) replacement + (str stripPrefix prefix)
-        else str
-    }
-  
-  class MethodSymbolOutput(method: Symbol) {
-    val pkg       = method.ownerChain find (_.isPackageClass) map (_.fullName) getOrElse ""
-    
-    def relativize(str: String): String = quietString(str stripPrefix (pkg + "."))
-    def relativize(tp: Type): String    = relativize(tp.normalize.toString)
-    def relativize(sym: Symbol): String = relativize(sym.info)
-    
-    def braceList(tparams: List[String]) = if (tparams.isEmpty) "" else (tparams map relativize).mkString("[", ", ", "]")
-    def parenList(params: List[Any])  = params.mkString("(", ", ", ")")
-    
-    def methodTypeToString(mt: MethodType) =
-      (mt.paramss map paramsString mkString "") + ": " + relativize(mt.finalResultType)
-    
-    def typeToString(tp: Type): String = relativize(
-      tp match {
-        case x if isFunctionType(x)           => functionString(x)
-        case x if isTupleType(x)              => tupleString(x)
-        case x if isRepeatedParamType(x)      => typeToString(x.typeArgs.head) + "*"
-        case mt @ MethodType(_, _)            => methodTypeToString(mt)
-        case x                                => x.toString
-      }
-    )
-
-    def tupleString(tp: Type) = parenList(tp.normalize.typeArgs map relativize)
-    def functionString(tp: Type) = tp.normalize.typeArgs match {
-      case List(t, r) => t + " => " + r
-      case xs         => parenList(xs.init) + " => " + xs.last
-    }
-
-    def tparamsString(tparams: List[Symbol])  = braceList(tparams map (_.defString))
-    def paramsString(params: List[Symbol])    = {
-      def paramNameString(sym: Symbol)  = if (sym.isSynthetic) "" else sym.nameString + ": "
-      def paramString(sym: Symbol)      = paramNameString(sym) + typeToString(sym.info.normalize)
-
-      val isImplicit = params.nonEmpty && params.head.isImplicit
-      val strs = (params map paramString) match {
-        case x :: xs if isImplicit  => ("implicit " + x) :: xs
-        case xs                     => xs
-      }
-      parenList(strs)
-    }    
-
-    def methodString() =
-      method.keyString + " " + method.nameString + (method.info.normalize match {
-        case PolyType(Nil, resType)             => ": " + typeToString(resType) // nullary method
-        case PolyType(tparams, resType)         => tparamsString(tparams) + typeToString(resType)
-        case mt @ MethodType(_, _)              => methodTypeToString(mt)
-        case x                                  => 
-          DBG("methodString(): %s / %s".format(x.getClass, x))            
-          x.toString
-      })
-  }  
-}
diff --git a/repl/src/main/scala/spark/repl/SparkHelper.scala b/repl/src/main/scala/spark/repl/SparkHelper.scala
new file mode 100644
index 0000000000..d8fb7191b4
--- /dev/null
+++ b/repl/src/main/scala/spark/repl/SparkHelper.scala
@@ -0,0 +1,5 @@
+package scala.tools.nsc
+
+object SparkHelper {
+  def explicitParentLoader(settings: Settings) = settings.explicitParentLoader
+}
diff --git a/repl/src/main/scala/spark/repl/SparkILoop.scala b/repl/src/main/scala/spark/repl/SparkILoop.scala
new file mode 100644
index 0000000000..bfbc66ebdd
--- /dev/null
+++ b/repl/src/main/scala/spark/repl/SparkILoop.scala
@@ -0,0 +1,990 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2011 LAMP/EPFL
+ * @author Alexander Spoon
+ */
+
+package spark.repl
+
+import scala.tools.nsc._
+import scala.tools.nsc.interpreter._
+
+import Predef.{ println => _, _ }
+import java.io.{ BufferedReader, FileReader, PrintWriter }
+import scala.sys.process.Process
+import session._
+import scala.tools.nsc.interpreter.{ Results => IR }
+import scala.tools.util.{ SignalManager, Signallable, Javap }
+import scala.annotation.tailrec
+import scala.util.control.Exception.{ ignoring }
+import scala.collection.mutable.ListBuffer
+import scala.concurrent.ops
+import util.{ ClassPath, Exceptional, stringFromWriter, stringFromStream }
+import interpreter._
+import io.{ File, Sources }
+
+import spark.SparkContext
+
+/** The Scala interactive shell.  It provides a read-eval-print loop
+ *  around the Interpreter class.
+ *  After instantiation, clients should call the main() method.
+ *
+ *  If no in0 is specified, then input will come from the console, and
+ *  the class will attempt to provide input editing feature such as
+ *  input history.
+ *
+ *  @author Moez A. Abdel-Gawad
+ *  @author  Lex Spoon
+ *  @version 1.2
+ */
+class SparkILoop(in0: Option[BufferedReader], val out: PrintWriter, val master: Option[String])
+                extends AnyRef
+                   with LoopCommands
+{
+  def this(in0: BufferedReader, out: PrintWriter, master: String) = this(Some(in0), out, Some(master))
+  def this(in0: BufferedReader, out: PrintWriter) = this(Some(in0), out, None)
+  def this() = this(None, new PrintWriter(Console.out, true), None)
+  
+  var in: InteractiveReader = _   // the input stream from which commands come
+  var settings: Settings = _
+  var intp: SparkIMain = _
+
+  /*
+  lazy val power = {
+    val g = intp.global
+    Power[g.type](this, g)
+  }
+  */
+  
+  // TODO
+  // object opt extends AestheticSettings
+  // 
+  @deprecated("Use `intp` instead.", "2.9.0")
+  def interpreter = intp
+  
+  @deprecated("Use `intp` instead.", "2.9.0")
+  def interpreter_= (i: SparkIMain): Unit = intp = i
+  
+  def history = in.history
+
+  /** The context class loader at the time this object was created */
+  protected val originalClassLoader = Thread.currentThread.getContextClassLoader
+
+  // Install a signal handler so we can be prodded.
+  private val signallable =
+    /*if (isReplDebug) Signallable("Dump repl state.")(dumpCommand())
+    else*/ null
+    
+  // classpath entries added via :cp
+  var addedClasspath: String = ""
+
+  /** A reverse list of commands to replay if the user requests a :replay */
+  var replayCommandStack: List[String] = Nil
+
+  /** A list of commands to replay if the user requests a :replay */
+  def replayCommands = replayCommandStack.reverse
+
+  /** Record a command for replay should the user request a :replay */
+  def addReplay(cmd: String) = replayCommandStack ::= cmd
+  
+  /** Try to install sigint handler: ignore failure.  Signal handler
+   *  will interrupt current line execution if any is in progress.
+   * 
+   *  Attempting to protect the repl from accidental exit, we only honor
+   *  a single ctrl-C if the current buffer is empty: otherwise we look
+   *  for a second one within a short time.
+   */
+  private def installSigIntHandler() {
+    def onExit() {
+      Console.println("") // avoiding "shell prompt in middle of line" syndrome
+      sys.exit(1)
+    }
+    ignoring(classOf[Exception]) {
+      SignalManager("INT") = {
+        if (intp == null)
+          onExit()
+        else if (intp.lineManager.running)
+          intp.lineManager.cancel()
+        else if (in.currentLine != "") {
+          // non-empty buffer, so make them hit ctrl-C a second time
+          SignalManager("INT") = onExit()
+          io.timer(5)(installSigIntHandler())  // and restore original handler if they don't
+        }
+        else onExit()
+      }
+    }
+  }
+
+  /** Close the interpreter and set the var to null. */
+  def closeInterpreter() {
+    if (intp ne null) {
+      intp.close
+      intp = null
+      Thread.currentThread.setContextClassLoader(originalClassLoader)
+    }
+  }
+  
+  class SparkILoopInterpreter extends SparkIMain(settings, out) {
+    override lazy val formatting = new Formatting {
+      def prompt = SparkILoop.this.prompt
+    }
+    override protected def createLineManager() = new Line.Manager {
+      override def onRunaway(line: Line[_]): Unit = {
+        val template = """
+          |// She's gone rogue, captain! Have to take her out!
+          |// Calling Thread.stop on runaway %s with offending code:
+          |// scala> %s""".stripMargin
+        
+        echo(template.format(line.thread, line.code))
+        // XXX no way to suppress the deprecation warning
+        line.thread.stop()
+        in.redrawLine()
+      }
+    }
+    override protected def parentClassLoader = {
+      SparkHelper.explicitParentLoader(settings).getOrElse( classOf[SparkILoop].getClassLoader )
+    }
+  }
+
+  /** Create a new interpreter. */
+  def createInterpreter() {
+    if (addedClasspath != "")
+      settings.classpath append addedClasspath
+      
+    intp = new SparkILoopInterpreter
+    intp.setContextClassLoader()
+    installSigIntHandler()
+  }
+
+  /** print a friendly help message */
+  def helpCommand(line: String): Result = {
+    if (line == "") helpSummary()
+    else uniqueCommand(line) match {
+      case Some(lc) => echo("\n" + lc.longHelp)
+      case _        => ambiguousError(line)
+    }
+  }
+  private def helpSummary() = {
+    val usageWidth  = commands map (_.usageMsg.length) max
+    val formatStr   = "%-" + usageWidth + "s %s %s"
+    
+    echo("All commands can be abbreviated, e.g. :he instead of :help.")
+    echo("Those marked with a * have more detailed help, e.g. :help imports.\n")
+    
+    commands foreach { cmd =>
+      val star = if (cmd.hasLongHelp) "*" else " "
+      echo(formatStr.format(cmd.usageMsg, star, cmd.help))
+    }
+  }
+  private def ambiguousError(cmd: String): Result = {
+    matchingCommands(cmd) match {
+      case Nil  => echo(cmd + ": no such command.  Type :help for help.")
+      case xs   => echo(cmd + " is ambiguous: did you mean " + xs.map(":" + _.name).mkString(" or ") + "?")
+    }
+    Result(true, None)    
+  }
+  private def matchingCommands(cmd: String) = commands filter (_.name startsWith cmd)
+  private def uniqueCommand(cmd: String): Option[LoopCommand] = {
+    // this lets us add commands willy-nilly and only requires enough command to disambiguate
+    matchingCommands(cmd) match {
+      case List(x)  => Some(x)
+      // exact match OK even if otherwise appears ambiguous
+      case xs       => xs find (_.name == cmd)
+    }
+  }
+  
+  /** Print a welcome message */
+  def printWelcome() {
+    echo("""Welcome to
+      ____              __  
+     / __/__  ___ _____/ /__
+    _\ \/ _ \/ _ `/ __/  '_/
+   /___/ .__/\_,_/_/ /_/\_\   version 0.3
+      /_/                  
+""")
+    import Properties._
+    val welcomeMsg = "Using Scala %s (%s, Java %s)".format(
+      versionString, javaVmName, javaVersion) 
+    echo(welcomeMsg)
+  }
+  
+  /** Show the history */
+  lazy val historyCommand = new LoopCommand("history", "show the history (optional num is commands to show)") {
+    override def usage = "[num]"
+    def defaultLines = 20
+    
+    def apply(line: String): Result = {
+      if (history eq NoHistory)
+        return "No history available."
+      
+      val xs      = words(line)
+      val current = history.index
+      val count   = try xs.head.toInt catch { case _: Exception => defaultLines }
+      val lines   = history.asStrings takeRight count
+      val offset  = current - lines.size + 1
+
+      for ((line, index) <- lines.zipWithIndex)
+        echo("%3d  %s".format(index + offset, line))
+    }
+  }
+
+  private def echo(msg: String) = {
+    out println msg
+    out.flush()
+  }
+  private def echoNoNL(msg: String) = {
+    out print msg
+    out.flush()
+  }
+  
+  /** Search the history */
+  def searchHistory(_cmdline: String) {
+    val cmdline = _cmdline.toLowerCase
+    val offset  = history.index - history.size + 1
+    
+    for ((line, index) <- history.asStrings.zipWithIndex ; if line.toLowerCase contains cmdline)
+      echo("%d %s".format(index + offset, line))
+  }
+  
+  private var currentPrompt = Properties.shellPromptString
+  def setPrompt(prompt: String) = currentPrompt = prompt
+  /** Prompt to print when awaiting input */
+  def prompt = currentPrompt
+  
+  import LoopCommand.{ cmd, nullary }
+
+  /** Standard commands **/
+  lazy val standardCommands = List(
+    cmd("cp", "<path>", "add a jar or directory to the classpath", addClasspath),
+    cmd("help", "[command]", "print this summary or command-specific help", helpCommand),
+    historyCommand,
+    cmd("h?", "<string>", "search the history", searchHistory),
+    cmd("imports", "[name name ...]", "show import history, identifying sources of names", importsCommand),
+    cmd("implicits", "[-v]", "show the implicits in scope", implicitsCommand),
+    cmd("javap", "<path|class>", "disassemble a file or class name", javapCommand),
+    nullary("keybindings", "show how ctrl-[A-Z] and other keys are bound", keybindingsCommand),
+    cmd("load", "<path>", "load and interpret a Scala file", loadCommand),
+    nullary("paste", "enter paste mode: all input up to ctrl-D compiled together", pasteCommand),
+    //nullary("power", "enable power user mode", powerCmd),
+    nullary("quit", "exit the interpreter", () => Result(false, None)),
+    nullary("replay", "reset execution and replay all previous commands", replay),
+    shCommand,
+    nullary("silent", "disable/enable automatic printing of results", verbosity),
+    cmd("type", "<expr>", "display the type of an expression without evaluating it", typeCommand)
+  )
+  
+  /** Power user commands */
+  lazy val powerCommands: List[LoopCommand] = List(
+    //nullary("dump", "displays a view of the interpreter's internal state", dumpCommand),
+    //cmd("phase", "<phase>", "set the implicit phase for power commands", phaseCommand),
+    cmd("wrap", "<method>", "name of method to wrap around each repl line", wrapCommand) withLongHelp ("""
+      |:wrap
+      |:wrap clear
+      |:wrap <method>
+      |
+      |Installs a wrapper around each line entered into the repl.
+      |Currently it must be the simple name of an existing method
+      |with the specific signature shown in the following example.
+      |
+      |def timed[T](body: => T): T = {
+      |  val start = System.nanoTime
+      |  try body
+      |  finally println((System.nanoTime - start) + " nanos elapsed.")
+      |}
+      |:wrap timed
+      |
+      |If given no argument, :wrap names the wrapper installed.
+      |An argument of clear will remove the wrapper if any is active.
+      |Note that wrappers do not compose (a new one replaces the old
+      |one) and also that the :phase command uses the same machinery,
+      |so setting :wrap will clear any :phase setting.       
+    """.stripMargin.trim)
+  )
+  
+  /*
+  private def dumpCommand(): Result = {
+    echo("" + power)
+    history.asStrings takeRight 30 foreach echo
+    in.redrawLine()
+  }
+  */
+  
+  private val typeTransforms = List(
+    "scala.collection.immutable." -> "immutable.",
+    "scala.collection.mutable."   -> "mutable.",
+    "scala.collection.generic."   -> "generic.",
+    "java.lang."                  -> "jl.",
+    "scala.runtime."              -> "runtime."
+  )
+  
+  private def importsCommand(line: String): Result = {
+    val tokens    = words(line)
+    val handlers  = intp.languageWildcardHandlers ++ intp.importHandlers
+    val isVerbose = tokens contains "-v"
+
+    handlers.filterNot(_.importedSymbols.isEmpty).zipWithIndex foreach {
+      case (handler, idx) =>
+        val (types, terms) = handler.importedSymbols partition (_.name.isTypeName)
+        val imps           = handler.implicitSymbols
+        val found          = tokens filter (handler importsSymbolNamed _)
+        val typeMsg        = if (types.isEmpty) "" else types.size + " types"
+        val termMsg        = if (terms.isEmpty) "" else terms.size + " terms"
+        val implicitMsg    = if (imps.isEmpty) "" else imps.size + " are implicit"
+        val foundMsg       = if (found.isEmpty) "" else found.mkString(" // imports: ", ", ", "")
+        val statsMsg       = List(typeMsg, termMsg, implicitMsg) filterNot (_ == "") mkString ("(", ", ", ")")
+        
+        intp.reporter.printMessage("%2d) %-30s %s%s".format(
+          idx + 1,
+          handler.importString,
+          statsMsg,
+          foundMsg
+        ))
+    }
+  }
+  
+  private def implicitsCommand(line: String): Result = {
+    val intp = SparkILoop.this.intp
+    import intp._
+    import global.Symbol
+    
+    def p(x: Any) = intp.reporter.printMessage("" + x)
+
+    // If an argument is given, only show a source with that
+    // in its name somewhere.
+    val args     = line split "\\s+"
+    val filtered = intp.implicitSymbolsBySource filter {
+      case (source, syms) =>
+        (args contains "-v") || {
+          if (line == "") (source.fullName.toString != "scala.Predef")
+          else (args exists (source.name.toString contains _))
+        }
+    }
+    
+    if (filtered.isEmpty)
+      return "No implicits have been imported other than those in Predef."
+      
+    filtered foreach {
+      case (source, syms) =>
+        p("/* " + syms.size + " implicit members imported from " + source.fullName + " */")
+        
+        // This groups the members by where the symbol is defined
+        val byOwner = syms groupBy (_.owner)
+        val sortedOwners = byOwner.toList sortBy { case (owner, _) => intp.afterTyper(source.info.baseClasses indexOf owner) }
+
+        sortedOwners foreach {
+          case (owner, members) =>
+            // Within each owner, we cluster results based on the final result type
+            // if there are more than a couple, and sort each cluster based on name.
+            // This is really just trying to make the 100 or so implicits imported
+            // by default into something readable.
+            val memberGroups: List[List[Symbol]] = {
+              val groups = members groupBy (_.tpe.finalResultType) toList
+              val (big, small) = groups partition (_._2.size > 3)
+              val xss = (
+                (big sortBy (_._1.toString) map (_._2)) :+
+                (small flatMap (_._2))
+              )
+
+              xss map (xs => xs sortBy (_.name.toString))
+            }
+          
+            val ownerMessage = if (owner == source) " defined in " else " inherited from "            
+            p("  /* " + members.size + ownerMessage + owner.fullName + " */")
+            
+            memberGroups foreach { group =>
+              group foreach (s => p("  " + intp.symbolDefString(s)))
+              p("")
+            }
+        }
+        p("")
+    }
+  }
+  
+  protected def newJavap() = new Javap(intp.classLoader, new SparkIMain.ReplStrippingWriter(intp)) {
+    override def tryClass(path: String): Array[Byte] = {
+      // Look for Foo first, then Foo$, but if Foo$ is given explicitly,
+      // we have to drop the $ to find object Foo, then tack it back onto
+      // the end of the flattened name.
+      def className  = intp flatName path
+      def moduleName = (intp flatName path.stripSuffix("$")) + "$"
+
+      val bytes = super.tryClass(className)
+      if (bytes.nonEmpty) bytes
+      else super.tryClass(moduleName)
+    }
+  }
+  private lazy val javap =
+    try newJavap()
+    catch { case _: Exception => null }
+  
+  private def typeCommand(line: String): Result = {
+    intp.typeOfExpression(line) match {
+      case Some(tp) => tp.toString
+      case _        => "Failed to determine type."
+    }
+  }
+  
+  private def javapCommand(line: String): Result = {
+    if (javap == null)
+      return ":javap unavailable on this platform."
+    if (line == "")
+      return ":javap [-lcsvp] [path1 path2 ...]"
+    
+    javap(words(line)) foreach { res =>
+      if (res.isError) return "Failed: " + res.value
+      else res.show()
+    }
+  }
+  private def keybindingsCommand(): Result = {
+    if (in.keyBindings.isEmpty) "Key bindings unavailable."
+    else {
+      echo("Reading jline properties for default key bindings.")
+      echo("Accuracy not guaranteed: treat this as a guideline only.\n")
+      in.keyBindings foreach (x => echo ("" + x))
+    }
+  }
+  private def wrapCommand(line: String): Result = {
+    def failMsg = "Argument to :wrap must be the name of a method with signature [T](=> T): T"
+    val intp = SparkILoop.this.intp
+    val g: intp.global.type = intp.global
+    import g._
+
+    words(line) match {
+      case Nil            =>
+        intp.executionWrapper match {
+          case ""   => "No execution wrapper is set."
+          case s    => "Current execution wrapper: " + s
+        }
+      case "clear" :: Nil =>
+        intp.executionWrapper match {
+          case ""   => "No execution wrapper is set."
+          case s    => intp.clearExecutionWrapper() ; "Cleared execution wrapper."
+        }
+      case wrapper :: Nil =>
+        intp.typeOfExpression(wrapper) match {
+          case Some(PolyType(List(targ), MethodType(List(arg), restpe))) =>
+            intp setExecutionWrapper intp.pathToTerm(wrapper)
+            "Set wrapper to '" + wrapper + "'"
+          case Some(x) =>
+            failMsg + "\nFound: " + x
+          case _ =>
+            failMsg + "\nFound: <unknown>"
+        }
+      case _ => failMsg
+    }
+  }
+
+  private def pathToPhaseWrapper = intp.pathToTerm("$r") + ".phased.atCurrent"
+  /*
+  private def phaseCommand(name: String): Result = {
+    // This line crashes us in TreeGen:
+    //
+    //   if (intp.power.phased set name) "..."
+    //
+    // Exception in thread "main" java.lang.AssertionError: assertion failed: ._7.type
+    //  at scala.Predef$.assert(Predef.scala:99)
+    //  at scala.tools.nsc.ast.TreeGen.mkAttributedQualifier(TreeGen.scala:69)
+    //  at scala.tools.nsc.ast.TreeGen.mkAttributedQualifier(TreeGen.scala:44)
+    //  at scala.tools.nsc.ast.TreeGen.mkAttributedRef(TreeGen.scala:101)
+    //  at scala.tools.nsc.ast.TreeGen.mkAttributedStableRef(TreeGen.scala:143)
+    //
+    // But it works like so, type annotated.
+    val phased: Phased = power.phased
+    import phased.NoPhaseName
+
+    if (name == "clear") {
+      phased.set(NoPhaseName)
+      intp.clearExecutionWrapper()
+      "Cleared active phase."
+    }
+    else if (name == "") phased.get match {
+      case NoPhaseName => "Usage: :phase <expr> (e.g. typer, erasure.next, erasure+3)"
+      case ph          => "Active phase is '%s'.  (To clear, :phase clear)".format(phased.get)
+    }
+    else {
+      val what = phased.parse(name)
+      if (what.isEmpty || !phased.set(what)) 
+        "'" + name + "' does not appear to represent a valid phase."
+      else {
+        intp.setExecutionWrapper(pathToPhaseWrapper)
+        val activeMessage =
+          if (what.toString.length == name.length) "" + what
+          else "%s (%s)".format(what, name)
+        
+        "Active phase is now: " + activeMessage
+      }
+    }
+  }
+  */
+  
+  /** Available commands */
+  def commands: List[LoopCommand] = standardCommands /* ++ (
+    if (isReplPower) powerCommands else Nil
+  )*/
+  
+  val replayQuestionMessage =
+    """|The repl compiler has crashed spectacularly. Shall I replay your
+       |session? I can re-run all lines except the last one.
+       |[y/n]
+    """.trim.stripMargin
+
+  private val crashRecovery: PartialFunction[Throwable, Unit] = {
+    case ex: Throwable =>
+      if (settings.YrichExes.value) {
+        val sources = implicitly[Sources]
+        echo("\n" + ex.getMessage)
+        echo(
+          if (isReplDebug) "[searching " + sources.path + " for exception contexts...]"
+          else "[searching for exception contexts...]"
+        )
+        echo(Exceptional(ex).force().context())
+      }
+      else {
+        echo(util.stackTraceString(ex))
+      }
+      ex match {
+        case _: NoSuchMethodError | _: NoClassDefFoundError =>
+          echo("Unrecoverable error.")
+          throw ex
+        case _  =>
+          def fn(): Boolean = in.readYesOrNo(replayQuestionMessage, { echo("\nYou must enter y or n.") ; fn() })
+          if (fn()) replay()
+          else echo("\nAbandoning crashed session.")
+      }
+  }
+
+  /** The main read-eval-print loop for the repl.  It calls
+   *  command() for each line of input, and stops when
+   *  command() returns false.
+   */
+  def loop() {
+    def readOneLine() = {
+      out.flush()
+      in readLine prompt
+    }
+    // return false if repl should exit
+    def processLine(line: String): Boolean =
+      if (line eq null) false               // assume null means EOF
+      else command(line) match {
+        case Result(false, _)           => false
+        case Result(_, Some(finalLine)) => addReplay(finalLine) ; true
+        case _                          => true
+      }
+
+    while (true) {
+      try if (!processLine(readOneLine)) return
+      catch crashRecovery
+    }
+  }
+
+  /** interpret all lines from a specified file */
+  def interpretAllFrom(file: File) {    
+    val oldIn = in
+    val oldReplay = replayCommandStack
+    
+    try file applyReader { reader =>
+      in = SimpleReader(reader, out, false)
+      echo("Loading " + file + "...")
+      loop()
+    }
+    finally {
+      in = oldIn
+      replayCommandStack = oldReplay
+    }
+  }
+
+  /** create a new interpreter and replay all commands so far */
+  def replay() {
+    closeInterpreter()
+    createInterpreter()
+    for (cmd <- replayCommands) {
+      echo("Replaying: " + cmd)  // flush because maybe cmd will have its own output
+      command(cmd)
+      echo("")
+    }
+  }
+  
+  /** fork a shell and run a command */
+  lazy val shCommand = new LoopCommand("sh", "run a shell command (result is implicitly => List[String])") {
+    override def usage = "<command line>"
+    def apply(line: String): Result = line match {
+      case ""   => showUsage()
+      case _    => 
+        val toRun = classOf[ProcessResult].getName + "(" + string2codeQuoted(line) + ")"
+        intp interpret toRun
+        ()
+    }
+  }
+  
+  def withFile(filename: String)(action: File => Unit) {
+    val f = File(filename)
+    
+    if (f.exists) action(f)
+    else echo("That file does not exist")
+  }
+  
+  def loadCommand(arg: String) = {
+    var shouldReplay: Option[String] = None
+    withFile(arg)(f => {
+      interpretAllFrom(f)
+      shouldReplay = Some(":load " + arg)
+    })
+    Result(true, shouldReplay)
+  }
+
+  def addClasspath(arg: String): Unit = {
+    val f = File(arg).normalize
+    if (f.exists) {
+      addedClasspath = ClassPath.join(addedClasspath, f.path)
+      val totalClasspath = ClassPath.join(settings.classpath.value, addedClasspath)
+      echo("Added '%s'.  Your new classpath is:\n\"%s\"".format(f.path, totalClasspath))
+      replay()
+    }
+    else echo("The path '" + f + "' doesn't seem to exist.")
+  }
+  
+  def powerCmd(): Result = {
+    if (isReplPower) "Already in power mode."
+    else enablePowerMode()
+  }
+  def enablePowerMode() = {
+    //replProps.power setValue true
+    //power.unleash()
+    //echo(power.banner)
+  }
+  
+  def verbosity() = {
+    val old = intp.printResults
+    intp.printResults = !old
+    echo("Switched " + (if (old) "off" else "on") + " result printing.")
+  }
+  
+  /** Run one command submitted by the user.  Two values are returned:
+    * (1) whether to keep running, (2) the line to record for replay,
+    * if any. */
+  def command(line: String): Result = {
+    if (line startsWith ":") {
+      val cmd = line.tail takeWhile (x => !x.isWhitespace)
+      uniqueCommand(cmd) match {
+        case Some(lc) => lc(line.tail stripPrefix cmd dropWhile (_.isWhitespace))
+        case _        => ambiguousError(cmd)
+      }
+    }
+    else if (intp.global == null) Result(false, None)  // Notice failure to create compiler
+    else Result(true, interpretStartingWith(line))
+  }
+  
+  private def readWhile(cond: String => Boolean) = {
+    Iterator continually in.readLine("") takeWhile (x => x != null && cond(x))
+  }
+  
+  def pasteCommand(): Result = {
+    echo("// Entering paste mode (ctrl-D to finish)\n")
+    val code = readWhile(_ => true) mkString "\n"
+    echo("\n// Exiting paste mode, now interpreting.\n")
+    intp interpret code
+    ()
+  }
+    
+  private object paste extends Pasted {
+    val ContinueString = "     | "
+    val PromptString   = "scala> "
+    
+    def interpret(line: String): Unit = {
+      echo(line.trim)
+      intp interpret line
+      echo("")
+    }
+    
+    def transcript(start: String) = {
+      // Printing this message doesn't work very well because it's buried in the
+      // transcript they just pasted.  Todo: a short timer goes off when
+      // lines stop coming which tells them to hit ctrl-D.
+      //
+      // echo("// Detected repl transcript paste: ctrl-D to finish.")
+      apply(Iterator(start) ++ readWhile(_.trim != PromptString.trim))
+    }
+  }
+  import paste.{ ContinueString, PromptString }
+
+  /** Interpret expressions starting with the first line.
+    * Read lines until a complete compilation unit is available
+    * or until a syntax error has been seen.  If a full unit is
+    * read, go ahead and interpret it.  Return the full string
+    * to be recorded for replay, if any.
+    */
+  def interpretStartingWith(code: String): Option[String] = {
+    // signal completion non-completion input has been received
+    in.completion.resetVerbosity()
+    
+    def reallyInterpret = {
+      val reallyResult = intp.interpret(code)
+      (reallyResult, reallyResult match {
+        case IR.Error       => None
+        case IR.Success     => Some(code)
+        case IR.Incomplete  =>
+          if (in.interactive && code.endsWith("\n\n")) {
+            echo("You typed two blank lines.  Starting a new command.")
+            None
+          } 
+          else in.readLine(ContinueString) match {
+            case null =>
+              // we know compilation is going to fail since we're at EOF and the
+              // parser thinks the input is still incomplete, but since this is
+              // a file being read non-interactively we want to fail.  So we send
+              // it straight to the compiler for the nice error message.
+              intp.compileString(code)
+              None
+
+            case line => interpretStartingWith(code + "\n" + line)
+          }
+      })
+    }
+    
+    /** Here we place ourselves between the user and the interpreter and examine
+     *  the input they are ostensibly submitting.  We intervene in several cases:
+     * 
+     *  1) If the line starts with "scala> " it is assumed to be an interpreter paste.
+     *  2) If the line starts with "." (but not ".." or "./") it is treated as an invocation
+     *     on the previous result.
+     *  3) If the Completion object's execute returns Some(_), we inject that value
+     *     and avoid the interpreter, as it's likely not valid scala code.
+     */
+    if (code == "") None
+    else if (!paste.running && code.trim.startsWith(PromptString)) {
+      paste.transcript(code)
+      None
+    }
+    else if (Completion.looksLikeInvocation(code) && intp.mostRecentVar != "") {
+      interpretStartingWith(intp.mostRecentVar + code)
+    }
+    else {
+      def runCompletion = in.completion execute code map (intp bindValue _)
+      /** Due to my accidentally letting file completion execution sneak ahead
+       *  of actual parsing this now operates in such a way that the scala
+       *  interpretation always wins.  However to avoid losing useful file
+       *  completion I let it fail and then check the others.  So if you
+       *  type /tmp it will echo a failure and then give you a Directory object.
+       *  It's not pretty: maybe I'll implement the silence bits I need to avoid
+       *  echoing the failure.
+       */
+      if (intp isParseable code) {
+        val (code, result) = reallyInterpret
+        //if (power != null && code == IR.Error)
+        //  runCompletion
+        
+        result
+      }
+      else runCompletion match {
+        case Some(_)  => None // completion hit: avoid the latent error
+        case _        => reallyInterpret._2  // trigger the latent error
+      }
+    }
+  }
+
+  // runs :load `file` on any files passed via -i
+  def loadFiles(settings: Settings) = settings match {
+    case settings: GenericRunnerSettings =>
+      for (filename <- settings.loadfiles.value) {
+        val cmd = ":load " + filename
+        command(cmd)
+        addReplay(cmd)
+        echo("")
+      }
+    case _ =>
+  }
+  
+  /** Tries to create a JLineReader, falling back to SimpleReader:
+   *  unless settings or properties are such that it should start
+   *  with SimpleReader.
+   */
+  def chooseReader(settings: Settings): InteractiveReader = {
+    if (settings.Xnojline.value || Properties.isEmacsShell)
+      SimpleReader()
+    else try JLineReader(
+      if (settings.noCompletion.value) NoCompletion
+      else new JLineCompletion(intp)
+    )
+    catch {
+      case ex @ (_: Exception | _: NoClassDefFoundError) =>
+        echo("Failed to created JLineReader: " + ex + "\nFalling back to SimpleReader.")
+        SimpleReader()
+    }
+  }
+
+  def initializeSpark() {
+    intp.beQuietDuring {
+      command("""
+        spark.repl.Main.interp.out.println("Creating SparkContext...");
+        spark.repl.Main.interp.out.flush();
+        @transient val sc = spark.repl.Main.interp.createSparkContext();
+        sc.waitForRegister();
+        spark.repl.Main.interp.out.println("Spark context available as sc.");
+        spark.repl.Main.interp.out.flush();
+        """)
+      command("import spark.SparkContext._");
+    }
+    echo("Type in expressions to have them evaluated.")
+    echo("Type :help for more information.")
+  }
+
+  var sparkContext: SparkContext = null
+
+  def createSparkContext(): SparkContext = {
+    val master = this.master match {
+      case Some(m) => m
+      case None => {
+        val prop = System.getenv("MASTER")
+        if (prop != null) prop else "local"
+      }
+    }
+    sparkContext = new SparkContext(master, "Spark shell")
+    sparkContext
+  }
+
+  def process(settings: Settings): Boolean = {
+    this.settings = settings
+    createInterpreter()
+    
+    // sets in to some kind of reader depending on environmental cues
+    in = in0 match {
+      case Some(reader) => SimpleReader(reader, out, true)
+      case None         => chooseReader(settings)
+    }
+
+    loadFiles(settings)
+    // it is broken on startup; go ahead and exit
+    if (intp.reporter.hasErrors)
+      return false
+    
+    printWelcome()
+    try {      
+      // this is about the illusion of snappiness.  We call initialize()
+      // which spins off a separate thread, then print the prompt and try 
+      // our best to look ready.  Ideally the user will spend a
+      // couple seconds saying "wow, it starts so fast!" and by the time
+      // they type a command the compiler is ready to roll.
+      intp.initialize()
+      initializeSpark()
+      if (isReplPower) {
+        echo("Starting in power mode, one moment...\n")
+        enablePowerMode()
+      }
+      loop()
+    }
+    finally closeInterpreter()
+    true
+  }
+
+  /** process command-line arguments and do as they request */
+  def process(args: Array[String]): Boolean = {
+    val command = new CommandLine(args.toList, msg => echo("scala: " + msg))
+    def neededHelp(): String =
+      (if (command.settings.help.value) command.usageMsg + "\n" else "") +
+      (if (command.settings.Xhelp.value) command.xusageMsg + "\n" else "")
+    
+    // if they asked for no help and command is valid, we call the real main
+    neededHelp() match {
+      case ""     => command.ok && process(command.settings)
+      case help   => echoNoNL(help) ; true
+    }
+  }
+  
+  @deprecated("Use `process` instead", "2.9.0")
+  def main(args: Array[String]): Unit = {
+    if (isReplDebug)
+      System.out.println(new java.util.Date)
+    
+    process(args)
+  }
+  @deprecated("Use `process` instead", "2.9.0")
+  def main(settings: Settings): Unit = process(settings)
+}
+
+object SparkILoop {
+  implicit def loopToInterpreter(repl: SparkILoop): SparkIMain = repl.intp
+  private def echo(msg: String) = Console println msg
+
+  // Designed primarily for use by test code: take a String with a
+  // bunch of code, and prints out a transcript of what it would look
+  // like if you'd just typed it into the repl.
+  def runForTranscript(code: String, settings: Settings): String = {
+    import java.io.{ BufferedReader, StringReader, OutputStreamWriter }
+    
+    stringFromStream { ostream =>
+      Console.withOut(ostream) {
+        val output = new PrintWriter(new OutputStreamWriter(ostream), true) {
+          override def write(str: String) = {
+            // completely skip continuation lines
+            if (str forall (ch => ch.isWhitespace || ch == '|')) ()
+            // print a newline on empty scala prompts
+            else if ((str contains '\n') && (str.trim == "scala> ")) super.write("\n")
+            else super.write(str)
+          }
+        }
+        val input = new BufferedReader(new StringReader(code)) {
+          override def readLine(): String = {
+            val s = super.readLine()
+            // helping out by printing the line being interpreted.
+            if (s != null)
+              output.println(s)
+            s
+          }
+        }
+        val repl = new SparkILoop(input, output)
+        if (settings.classpath.isDefault)
+          settings.classpath.value = sys.props("java.class.path")
+
+        repl process settings
+      }
+    }
+  }
+  
+  /** Creates an interpreter loop with default settings and feeds
+   *  the given code to it as input.
+   */
+  def run(code: String, sets: Settings = new Settings): String = {
+    import java.io.{ BufferedReader, StringReader, OutputStreamWriter }
+    
+    stringFromStream { ostream =>
+      Console.withOut(ostream) {
+        val input    = new BufferedReader(new StringReader(code))
+        val output   = new PrintWriter(new OutputStreamWriter(ostream), true)
+        val repl     = new SparkILoop(input, output)
+        
+        if (sets.classpath.isDefault)
+          sets.classpath.value = sys.props("java.class.path")
+
+        repl process sets
+      }
+    }
+  }
+  def run(lines: List[String]): String = run(lines map (_ + "\n") mkString)
+
+  // provide the enclosing type T
+  // in order to set up the interpreter's classpath and parent class loader properly
+  def breakIf[T: Manifest](assertion: => Boolean, args: NamedParam*): Unit =
+    if (assertion) break[T](args.toList)
+
+  // start a repl, binding supplied args
+  def break[T: Manifest](args: List[NamedParam]): Unit = {
+    val msg = if (args.isEmpty) "" else "  Binding " + args.size + " value%s.".format(
+      if (args.size == 1) "" else "s"
+    )
+    echo("Debug repl starting." + msg)
+    val repl = new SparkILoop {
+      override def prompt = "\ndebug> "
+    }
+    repl.settings = new Settings(echo)
+    repl.settings.embeddedDefaults[T]
+    repl.createInterpreter()
+    repl.in = JLineReader(repl)
+    
+    // rebind exit so people don't accidentally call sys.exit by way of predef
+    repl.quietRun("""def exit = println("Type :quit to resume program execution.")""")
+    args foreach (p => repl.bind(p.name, p.tpe, p.value))
+    repl.loop()
+
+    echo("\nDebug repl exiting.")
+    repl.closeInterpreter()
+  }  
+}
diff --git a/repl/src/main/scala/spark/repl/SparkIMain.scala b/repl/src/main/scala/spark/repl/SparkIMain.scala
new file mode 100644
index 0000000000..1fdc4eaf8a
--- /dev/null
+++ b/repl/src/main/scala/spark/repl/SparkIMain.scala
@@ -0,0 +1,1131 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2011 LAMP/EPFL
+ * @author  Martin Odersky
+ */
+
+package spark.repl
+
+import scala.tools.nsc._
+import scala.tools.nsc.interpreter._
+
+import Predef.{ println => _, _ }
+import java.io.{ PrintWriter }
+import java.lang.reflect
+import java.net.URL
+import util.{ Set => _, _ }
+import io.{ AbstractFile, PlainFile, VirtualDirectory }
+import reporters.{ ConsoleReporter, Reporter }
+import symtab.{ Flags, Names }
+import scala.tools.nsc.interpreter.{ Results => IR }
+import scala.tools.util.PathResolver
+import scala.tools.nsc.util.{ ScalaClassLoader, Exceptional }
+import ScalaClassLoader.URLClassLoader
+import Exceptional.unwrap
+import scala.collection.{ mutable, immutable }
+import scala.PartialFunction.{ cond, condOpt }
+import scala.util.control.Exception.{ ultimately }
+import scala.reflect.NameTransformer
+import SparkIMain._
+
+import spark.HttpServer
+import spark.Utils
+
+/** An interpreter for Scala code.
+ *  
+ *  The main public entry points are compile(), interpret(), and bind().
+ *  The compile() method loads a complete Scala file.  The interpret() method
+ *  executes one line of Scala code at the request of the user.  The bind()
+ *  method binds an object to a variable that can then be used by later
+ *  interpreted code.
+ *  
+ *  The overall approach is based on compiling the requested code and then
+ *  using a Java classloader and Java reflection to run the code
+ *  and access its results.
+ *  
+ *  In more detail, a single compiler instance is used
+ *  to accumulate all successfully compiled or interpreted Scala code.  To
+ *  "interpret" a line of code, the compiler generates a fresh object that
+ *  includes the line of code and which has public member(s) to export
+ *  all variables defined by that code.  To extract the result of an
+ *  interpreted line to show the user, a second "result object" is created
+ *  which imports the variables exported by the above object and then
+ *  exports a single member named "$export".  To accomodate user expressions
+ *  that read from variables or methods defined in previous statements, "import"
+ *  statements are used.
+ *  
+ *  This interpreter shares the strengths and weaknesses of using the
+ *  full compiler-to-Java.  The main strength is that interpreted code
+ *  behaves exactly as does compiled code, including running at full speed.
+ *  The main weakness is that redefining classes and methods is not handled
+ *  properly, because rebinding at the Java level is technically difficult.
+ *
+ *  @author Moez A. Abdel-Gawad
+ *  @author Lex Spoon
+ */
+class SparkIMain(val settings: Settings, protected val out: PrintWriter) extends SparkImports {
+  imain =>
+  
+  /** construct an interpreter that reports to Console */
+  def this(settings: Settings) = this(settings, new NewLinePrintWriter(new ConsoleWriter, true))
+  def this() = this(new Settings())
+
+  /** whether to print out result lines */
+  var printResults: Boolean = true
+  
+  /** whether to print errors */
+  var totalSilence: Boolean = false
+
+  private val RESULT_OBJECT_PREFIX = "RequestResult$"
+  
+  lazy val formatting: Formatting = new Formatting {
+    val prompt = Properties.shellPromptString
+  }
+  import formatting._
+  
+  val SPARK_DEBUG_REPL: Boolean = (System.getenv("SPARK_DEBUG_REPL") == "1")
+
+  /** Local directory to save .class files too */
+  val outputDir = {
+    val tmp = System.getProperty("java.io.tmpdir")
+    val rootDir = System.getProperty("spark.repl.classdir", tmp)
+    Utils.createTempDir(rootDir)
+  }
+  if (SPARK_DEBUG_REPL) {
+    echo("Output directory: " + outputDir)
+  }
+
+  /** Scala compiler virtual directory for outputDir */
+  val virtualDirectory = new PlainFile(outputDir)
+
+  /** Jetty server that will serve our classes to worker nodes */
+  val classServer = new HttpServer(outputDir)
+
+  // Start the classServer and store its URI in a spark system property
+  // (which will be passed to executors so that they can connect to it)
+  classServer.start()
+  System.setProperty("spark.repl.class.uri", classServer.uri)
+  if (SPARK_DEBUG_REPL) {
+    echo("Class server started, URI = " + classServer.uri)
+  }
+
+  /*
+  // directory to save .class files to
+  val virtualDirectory = new VirtualDirectory("(memory)", None) {
+    private def pp(root: io.AbstractFile, indentLevel: Int) {
+      val spaces = "    " * indentLevel
+      out.println(spaces + root.name)
+      if (root.isDirectory)
+        root.toList sortBy (_.name) foreach (x => pp(x, indentLevel + 1))
+    }
+    // print the contents hierarchically
+    def show() = pp(this, 0)
+  }
+  */
+
+  /** reporter */
+  lazy val reporter: ConsoleReporter = new SparkIMain.ReplReporter(this)
+  import reporter.{ printMessage, withoutTruncating }
+  
+  // not sure if we have some motivation to print directly to console
+  private def echo(msg: String) { Console println msg }
+  
+  // protected def defaultImports: List[String] = List("_root_.scala.sys.exit")
+
+  /** We're going to go to some trouble to initialize the compiler asynchronously.
+   *  It's critical that nothing call into it until it's been initialized or we will
+   *  run into unrecoverable issues, but the perceived repl startup time goes
+   *  through the roof if we wait for it.  So we initialize it with a future and
+   *  use a lazy val to ensure that any attempt to use the compiler object waits
+   *  on the future.
+   */
+  private val _compiler: Global = newCompiler(settings, reporter)
+  private var _initializeComplete = false
+  def isInitializeComplete = _initializeComplete
+
+  private def _initialize(): Boolean = {
+    val source = """
+      |class $repl_$init {
+      |  List(1) map (_ + 1)
+      |}
+      |""".stripMargin
+    
+    val result = try {
+      new _compiler.Run() compileSources List(new BatchSourceFile("<init>", source))
+      if (isReplDebug || settings.debug.value) {
+        // Can't use printMessage here, it deadlocks
+        Console.println("Repl compiler initialized.")
+      }
+      // addImports(defaultImports: _*)
+      true
+    } 
+    catch {
+      case x: AbstractMethodError =>
+        printMessage("""
+          |Failed to initialize compiler: abstract method error.
+          |This is most often remedied by a full clean and recompile.
+          |""".stripMargin
+        )
+        x.printStackTrace()
+        false
+      case x: MissingRequirementError => printMessage("""
+        |Failed to initialize compiler: %s not found.
+        |** Note that as of 2.8 scala does not assume use of the java classpath.
+        |** For the old behavior pass -usejavacp to scala, or if using a Settings
+        |** object programatically, settings.usejavacp.value = true.""".stripMargin.format(x.req)
+      )
+      false
+    }
+    
+    try result
+    finally _initializeComplete = result
+  }
+  
+  // set up initialization future
+  private var _isInitialized: () => Boolean = null
+  def initialize() = synchronized { 
+    if (_isInitialized == null)
+      _isInitialized = scala.concurrent.ops future _initialize()
+  }
+
+  /** the public, go through the future compiler */
+  lazy val global: Global = {
+    initialize()
+
+    // blocks until it is ; false means catastrophic failure
+    if (_isInitialized()) _compiler
+    else null
+  }
+  @deprecated("Use `global` for access to the compiler instance.", "2.9.0")
+  lazy val compiler: global.type = global
+
+  import global._
+  
+  object naming extends {
+    val global: imain.global.type = imain.global
+  } with Naming {
+    // make sure we don't overwrite their unwisely named res3 etc.
+    override def freshUserVarName(): String = {
+      val name = super.freshUserVarName()
+      if (definedNameMap contains name) freshUserVarName()
+      else name
+    }
+  }
+  import naming._
+
+  // object dossiers extends {
+  //   val intp: imain.type = imain
+  // } with Dossiers { }
+  // import dossiers._
+  
+  lazy val memberHandlers = new {
+    val intp: imain.type = imain
+  } with SparkMemberHandlers
+  import memberHandlers._
+  
+  def atPickler[T](op: => T): T = atPhase(currentRun.picklerPhase)(op)
+  def afterTyper[T](op: => T): T = atPhase(currentRun.typerPhase.next)(op)
+
+  /** Temporarily be quiet */
+  def beQuietDuring[T](operation: => T): T = {    
+    val wasPrinting = printResults    
+    ultimately(printResults = wasPrinting) {
+      if (isReplDebug) echo(">> beQuietDuring")
+      else printResults = false
+      
+      operation
+    }
+  }
+  def beSilentDuring[T](operation: => T): T = {
+    val saved = totalSilence
+    totalSilence = true
+    try operation
+    finally totalSilence = saved
+  }
+  
+  def quietRun[T](code: String) = beQuietDuring(interpret(code))
+
+  /** whether to bind the lastException variable */
+  private var bindLastException = true
+  
+  /** A string representing code to be wrapped around all lines. */
+  private var _executionWrapper: String = ""
+  def executionWrapper = _executionWrapper
+  def setExecutionWrapper(code: String) = _executionWrapper = code
+  def clearExecutionWrapper() = _executionWrapper = ""
+  
+  /** Temporarily stop binding lastException */
+  def withoutBindingLastException[T](operation: => T): T = {
+    val wasBinding = bindLastException
+    ultimately(bindLastException = wasBinding) {
+      bindLastException = false
+      operation
+    }
+  }
+  
+  protected def createLineManager(): Line.Manager = new Line.Manager
+  lazy val lineManager = createLineManager()
+
+  /** interpreter settings */
+  lazy val isettings = new SparkISettings(this)
+
+  /** Instantiate a compiler.  Subclasses can override this to
+   *  change the compiler class used by this interpreter. */
+  protected def newCompiler(settings: Settings, reporter: Reporter) = {
+    settings.outputDirs setSingleOutput virtualDirectory
+    settings.exposeEmptyPackage.value = true
+    new Global(settings, reporter)
+  }
+  
+  /** the compiler's classpath, as URL's */
+  lazy val compilerClasspath: List[URL] = new PathResolver(settings) asURLs
+
+  /* A single class loader is used for all commands interpreted by this Interpreter.
+     It would also be possible to create a new class loader for each command
+     to interpret.  The advantages of the current approach are:
+
+       - Expressions are only evaluated one time.  This is especially
+         significant for I/O, e.g. "val x = Console.readLine"
+
+     The main disadvantage is:
+
+       - Objects, classes, and methods cannot be rebound.  Instead, definitions
+         shadow the old ones, and old code objects refer to the old
+         definitions.
+  */
+  private var _classLoader: AbstractFileClassLoader = null
+  def resetClassLoader() = _classLoader = makeClassLoader()
+  def classLoader: AbstractFileClassLoader = {
+    if (_classLoader == null)
+      resetClassLoader()
+    
+    _classLoader
+  }
+  private def makeClassLoader(): AbstractFileClassLoader = {
+    val parent =
+      if (parentClassLoader == null)  ScalaClassLoader fromURLs compilerClasspath
+      else                            new URLClassLoader(compilerClasspath, parentClassLoader)
+
+    new AbstractFileClassLoader(virtualDirectory, parent) {
+      /** Overridden here to try translating a simple name to the generated
+       *  class name if the original attempt fails.  This method is used by
+       *  getResourceAsStream as well as findClass.
+       */
+      override protected def findAbstractFile(name: String): AbstractFile = {
+        super.findAbstractFile(name) match {
+          // deadlocks on startup if we try to translate names too early
+          case null if isInitializeComplete => generatedName(name) map (x => super.findAbstractFile(x)) orNull
+          case file                         => file
+        }
+      }
+    }
+  }
+  private def loadByName(s: String): JClass =
+    (classLoader tryToInitializeClass s) getOrElse sys.error("Failed to load expected class: '" + s + "'")
+  
+  protected def parentClassLoader: ClassLoader =
+    SparkHelper.explicitParentLoader(settings).getOrElse( this.getClass.getClassLoader() )
+
+  def getInterpreterClassLoader() = classLoader
+
+  // Set the current Java "context" class loader to this interpreter's class loader
+  def setContextClassLoader() = classLoader.setAsContext()
+
+  /** Given a simple repl-defined name, returns the real name of
+   *  the class representing it, e.g. for "Bippy" it may return
+   *
+   *    $line19.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$Bippy
+   */
+  def generatedName(simpleName: String): Option[String] = {
+    if (simpleName endsWith "$") optFlatName(simpleName.init) map (_ + "$")
+    else optFlatName(simpleName)
+  }
+  def flatName(id: String)    = optFlatName(id) getOrElse id
+  def optFlatName(id: String) = requestForIdent(id) map (_ fullFlatName id)
+
+  def allDefinedNames = definedNameMap.keys.toList sortBy (_.toString)
+  def pathToType(id: String): String = pathToName(newTypeName(id))
+  def pathToTerm(id: String): String = pathToName(newTermName(id))
+  def pathToName(name: Name): String = {
+    if (definedNameMap contains name)
+      definedNameMap(name) fullPath name
+    else name.toString
+  }
+
+  /** Most recent tree handled which wasn't wholly synthetic. */
+  private def mostRecentlyHandledTree: Option[Tree] = {
+    prevRequests.reverse foreach { req =>
+      req.handlers.reverse foreach {
+        case x: MemberDefHandler if x.definesValue && !isInternalVarName(x.name)  => return Some(x.member)
+        case _ => ()
+      }
+    }
+    None
+  }
+  
+  /** Stubs for work in progress. */
+  def handleTypeRedefinition(name: TypeName, old: Request, req: Request) = {
+    for (t1 <- old.simpleNameOfType(name) ; t2 <- req.simpleNameOfType(name)) {
+      DBG("Redefining type '%s'\n  %s -> %s".format(name, t1, t2))
+    }
+  }
+
+  def handleTermRedefinition(name: TermName, old: Request, req: Request) = {
+    for (t1 <- old.compilerTypeOf get name ; t2 <- req.compilerTypeOf get name) {
+      // Printing the types here has a tendency to cause assertion errors, like
+      //   assertion failed: fatal: <refinement> has owner value x, but a class owner is required
+      // so DBG is by-name now to keep it in the family.  (It also traps the assertion error,
+      // but we don't want to unnecessarily risk hosing the compiler's internal state.)
+      DBG("Redefining term '%s'\n  %s -> %s".format(name, t1, t2))
+    }
+  }
+  def recordRequest(req: Request) {
+    if (req == null || referencedNameMap == null)
+      return
+
+    prevRequests += req
+    req.referencedNames foreach (x => referencedNameMap(x) = req)
+    
+    // warning about serially defining companions.  It'd be easy
+    // enough to just redefine them together but that may not always
+    // be what people want so I'm waiting until I can do it better.
+    if (!settings.nowarnings.value) {
+      for {
+        name   <- req.definedNames filterNot (x => req.definedNames contains x.companionName)
+        oldReq <- definedNameMap get name.companionName
+        newSym <- req.definedSymbols get name
+        oldSym <- oldReq.definedSymbols get name.companionName
+      } {
+        printMessage("warning: previously defined %s is not a companion to %s.".format(oldSym, newSym))
+        printMessage("Companions must be defined together; you may wish to use :paste mode for this.")
+      }
+    }
+    
+    // Updating the defined name map
+    req.definedNames foreach { name =>
+      if (definedNameMap contains name) {
+        if (name.isTypeName) handleTypeRedefinition(name.toTypeName, definedNameMap(name), req)
+        else handleTermRedefinition(name.toTermName, definedNameMap(name), req)
+      }
+      definedNameMap(name) = req
+    }
+  }
+
+  /** Parse a line into a sequence of trees. Returns None if the input is incomplete. */
+  def parse(line: String): Option[List[Tree]] = {
+    var justNeedsMore = false
+    reporter.withIncompleteHandler((pos,msg) => {justNeedsMore = true}) {
+      // simple parse: just parse it, nothing else
+      def simpleParse(code: String): List[Tree] = {
+        reporter.reset()
+        val unit = new CompilationUnit(new BatchSourceFile("<console>", code))
+        val scanner = new syntaxAnalyzer.UnitParser(unit)
+        
+        scanner.templateStatSeq(false)._2
+      }
+      val trees = simpleParse(line)
+      
+      if (reporter.hasErrors)   Some(Nil)  // the result did not parse, so stop
+      else if (justNeedsMore)   None
+      else                      Some(trees)
+    }
+  }
+  
+  def isParseable(line: String): Boolean = {
+    beSilentDuring {
+      parse(line) match {
+        case Some(xs) => xs.nonEmpty  // parses as-is
+        case None     => true         // incomplete
+      }
+    }
+  }
+
+  /** Compile an nsc SourceFile.  Returns true if there are
+   *  no compilation errors, or false otherwise.
+   */
+  def compileSources(sources: SourceFile*): Boolean = {
+    reporter.reset()
+    new Run() compileSources sources.toList
+    !reporter.hasErrors
+  }
+
+  /** Compile a string.  Returns true if there are no
+   *  compilation errors, or false otherwise.
+   */
+  def compileString(code: String): Boolean =
+    compileSources(new BatchSourceFile("<script>", code))
+
+  /** Build a request from the user. `trees` is `line` after being parsed.
+   */
+  private def buildRequest(line: String, trees: List[Tree]): Request = new Request(line, trees)
+  
+  private def requestFromLine(line: String, synthetic: Boolean): Either[IR.Result, Request] = {
+    val trees = parse(indentCode(line)) match {
+      case None         => return Left(IR.Incomplete)
+      case Some(Nil)    => return Left(IR.Error) // parse error or empty input
+      case Some(trees)  => trees
+    }
+    
+    // use synthetic vars to avoid filling up the resXX slots
+    def varName = if (synthetic) freshInternalVarName() else freshUserVarName()
+
+    // Treat a single bare expression specially. This is necessary due to it being hard to
+    // modify code at a textual level, and it being hard to submit an AST to the compiler.
+    if (trees.size == 1) trees.head match {
+      case _:Assign                         => // we don't want to include assignments
+      case _:TermTree | _:Ident | _:Select  => // ... but do want these as valdefs.
+        requestFromLine("val %s =\n%s".format(varName, line), synthetic) match {
+          case Right(req) => return Right(req withOriginalLine line)
+          case x          => return x
+        }
+      case _                                =>
+    }
+        
+    // figure out what kind of request
+    Right(buildRequest(line, trees))
+  }
+
+  /** 
+   *    Interpret one line of input.  All feedback, including parse errors
+   *    and evaluation results, are printed via the supplied compiler's 
+   *    reporter.  Values defined are available for future interpreted
+   *    strings.
+   *  
+   *  
+   *    The return value is whether the line was interpreter successfully,
+   *    e.g. that there were no parse errors.
+   *  
+   *
+   *  @param line ...
+   *  @return     ...
+   */
+  def interpret(line: String): IR.Result = interpret(line, false)
+  def interpret(line: String, synthetic: Boolean): IR.Result = {
+    def loadAndRunReq(req: Request) = {
+      val (result, succeeded) = req.loadAndRun
+      /** To our displeasure, ConsoleReporter offers only printMessage,
+       *  which tacks a newline on the end.  Since that breaks all the
+       *  output checking, we have to take one off to balance.
+       */
+      def show() = {
+        if (result == "") ()
+        else printMessage(result stripSuffix "\n")
+      }
+
+      if (succeeded) {
+        if (printResults)
+          show()
+        // Book-keeping.  Have to record synthetic requests too,
+        // as they may have been issued for information, e.g. :type
+        recordRequest(req)
+        IR.Success
+      }
+      else {
+        // don't truncate stack traces
+        withoutTruncating(show())
+        IR.Error
+      }
+    }
+    
+    if (global == null) IR.Error
+    else requestFromLine(line, synthetic) match {
+      case Left(result) => result
+      case Right(req)   => 
+        // null indicates a disallowed statement type; otherwise compile and
+        // fail if false (implying e.g. a type error)
+        if (req == null || !req.compile) IR.Error
+        else loadAndRunReq(req)
+    }
+  }
+
+  /** Bind a specified name to a specified value.  The name may
+   *  later be used by expressions passed to interpret.
+   *
+   *  @param name      the variable name to bind
+   *  @param boundType the type of the variable, as a string
+   *  @param value     the object value to bind to it
+   *  @return          an indication of whether the binding succeeded
+   */
+  def bind(name: String, boundType: String, value: Any): IR.Result = {
+    val bindRep = new ReadEvalPrint()
+    val run = bindRep.compile("""
+        |object %s {
+        |  var value: %s = _
+        |  def set(x: Any) = value = x.asInstanceOf[%s]
+        |}
+      """.stripMargin.format(bindRep.evalName, boundType, boundType)
+      )
+    bindRep.callOpt("set", value) match {
+      case Some(_)  => interpret("val %s = %s.value".format(name, bindRep.evalPath))
+      case _        => DBG("Set failed in bind(%s, %s, %s)".format(name, boundType, value)) ; IR.Error
+    }
+  }
+  def rebind(p: NamedParam): IR.Result = {
+    val name     = p.name
+    val oldType  = typeOfTerm(name) getOrElse { return IR.Error }
+    val newType  = p.tpe
+    val tempName = freshInternalVarName()
+
+    quietRun("val %s = %s".format(tempName, name))
+    quietRun("val %s = %s.asInstanceOf[%s]".format(name, tempName, newType))
+  }
+  def quietImport(ids: String*): IR.Result = beQuietDuring(addImports(ids: _*))
+  def addImports(ids: String*): IR.Result = 
+    if (ids.isEmpty) IR.Success
+    else interpret("import " + ids.mkString(", "))
+
+  def quietBind(p: NamedParam): IR.Result                  = beQuietDuring(bind(p))
+  def bind(p: NamedParam): IR.Result                       = bind(p.name, p.tpe, p.value)
+  def bind[T: Manifest](name: String, value: T): IR.Result = bind((name, value))
+  def bindValue(x: Any): IR.Result                         = bind(freshUserVarName(), TypeStrings.fromValue(x), x)
+
+  /** Reset this interpreter, forgetting all user-specified requests. */
+  def reset() {
+    //virtualDirectory.clear()
+    virtualDirectory.delete()
+    virtualDirectory.create()
+    resetClassLoader()
+    resetAllCreators()
+    prevRequests.clear()
+  }
+
+  /** This instance is no longer needed, so release any resources
+   *  it is using.  The reporter's output gets flushed.
+   */
+  def close() {
+    reporter.flush()
+  }
+  
+  /** Here is where we:
+   * 
+   *  1) Read some source code, and put it in the "read" object.
+   *  2) Evaluate the read object, and put the result in the "eval" object.
+   *  3) Create a String for human consumption, and put it in the "print" object.
+   *
+   *  Read! Eval! Print! Some of that not yet centralized here.
+   */
+  class ReadEvalPrint(lineId: Int) {
+    def this() = this(freshLineId())
+
+    val packageName = "$line" + lineId
+    val readName    = "$read"
+    val evalName    = "$eval"
+    val printName   = "$print"
+    val valueMethod = "$result"   // no-args method giving result
+    
+    // TODO: split it out into a package object and a regular
+    // object and we can do that much less wrapping.
+    def packageDecl = "package " + packageName
+    
+    def pathTo(name: String)   = packageName + "." + name
+    def packaged(code: String) = packageDecl + "\n\n" + code
+
+    def readPath  = pathTo(readName)
+    def evalPath  = pathTo(evalName)
+    def printPath = pathTo(printName)
+    
+    def call(name: String, args: Any*): AnyRef = 
+      evalMethod(name).invoke(evalClass, args.map(_.asInstanceOf[AnyRef]): _*)
+    
+    def callOpt(name: String, args: Any*): Option[AnyRef] =
+      try Some(call(name, args: _*))
+      catch { case ex: Exception =>
+        quietBind("lastException", ex)
+        None
+      }
+    
+    lazy val evalClass = loadByName(evalPath)
+    lazy val evalValue = callOpt(valueMethod)
+
+    def compile(source: String): Boolean = compileAndSaveRun("<console>", source)
+    def lineAfterTyper[T](op: => T): T = {
+      assert(lastRun != null, "Internal error: trying to use atPhase, but Run is null." + this)
+      atPhase(lastRun.typerPhase.next)(op)
+    }
+    
+    /** The innermost object inside the wrapper, found by
+      * following accessPath into the outer one.
+      */
+    def resolvePathToSymbol(accessPath: String): Symbol = {
+      val readRoot  = definitions.getModule(readPath)   // the outermost wrapper
+      (accessPath split '.').foldLeft(readRoot) { (sym, name) =>
+        if (name == "") sym else
+        lineAfterTyper(sym.info member newTermName(name))
+      }
+    }
+    
+    // def compileAndTypeExpr(expr: String): Option[Typer] = {
+    //   class TyperRun extends Run {
+    //     override def stopPhase(name: String) = name == "superaccessors"
+    //   }
+    // }
+    private var lastRun: Run = _
+    private def evalMethod(name: String) = {
+      val methods = evalClass.getMethods filter (_.getName == name)
+      assert(methods.size == 1, "Internal error - eval object method " + name + " is overloaded: " + methods)
+      methods.head
+    }
+    private def compileAndSaveRun(label: String, code: String) = {
+      showCodeIfDebugging(code)
+      reporter.reset()
+      lastRun = new Run()
+      lastRun.compileSources(List(new BatchSourceFile(label, packaged(code))))
+      !reporter.hasErrors
+    }
+  }
+
+  /** One line of code submitted by the user for interpretation */
+  // private 
+  class Request(val line: String, val trees: List[Tree]) {
+    val lineRep     = new ReadEvalPrint()
+    import lineRep.lineAfterTyper
+    
+    private var _originalLine: String = null
+    def withOriginalLine(s: String): this.type = { _originalLine = s ; this }
+    def originalLine = if (_originalLine == null) line else _originalLine
+
+    /** handlers for each tree in this request */
+    val handlers: List[MemberHandler] = trees map (memberHandlers chooseHandler _)
+
+    /** all (public) names defined by these statements */
+    val definedNames = handlers flatMap (_.definedNames)
+
+    /** list of names used by this expression */
+    val referencedNames: List[Name] = handlers flatMap (_.referencedNames)
+    
+    /** def and val names */
+    def termNames = handlers flatMap (_.definesTerm)
+    def typeNames = handlers flatMap (_.definesType)
+
+    /** Code to import bound names from previous lines - accessPath is code to
+      * append to objectName to access anything bound by request.
+      */
+    val ComputedImports(importsPreamble, importsTrailer, accessPath) =
+      importsCode(referencedNames.toSet)
+
+    /** Code to access a variable with the specified name */
+    def fullPath(vname: String) = (
+      lineRep.readPath + accessPath + ".`%s`".format(vname)
+    )
+    /** Same as fullpath, but after it has been flattened, so:
+     *  $line5.$iw.$iw.$iw.Bippy      // fullPath
+     *  $line5.$iw$$iw$$iw$Bippy      // fullFlatName
+     */
+    def fullFlatName(name: String) =
+      lineRep.readPath + accessPath.replace('.', '$') + "$" + name
+
+    /** Code to access a variable with the specified name */
+    def fullPath(vname: Name): String = fullPath(vname.toString)
+
+    /** the line of code to compute */
+    def toCompute = line
+
+    /** generate the source code for the object that computes this request */
+    private object ObjectSourceCode extends CodeAssembler[MemberHandler] {
+      val preamble = """
+        |object %s {
+        |  %s%s
+      """.stripMargin.format(lineRep.readName, importsPreamble, indentCode(toCompute))
+      val postamble = importsTrailer + "\n}"
+      val generate = (m: MemberHandler) => m extraCodeToEvaluate Request.this
+    }
+    
+    private object ResultObjectSourceCode extends CodeAssembler[MemberHandler] {
+      /** We only want to generate this code when the result
+       *  is a value which can be referred to as-is.
+       */      
+      val evalResult =
+        if (!handlers.last.definesValue) ""
+        else handlers.last.definesTerm match {
+          case Some(vname) if typeOf contains vname =>
+            """
+            |lazy val $result = {
+            |  $export
+            |  %s
+            |}""".stripMargin.format(fullPath(vname))
+          case _  => ""
+        }
+      // first line evaluates object to make sure constructor is run
+      // initial "" so later code can uniformly be: + etc
+      val preamble = """
+      |object %s {
+      |  %s
+      |  val $export: String = %s {
+      |    %s
+      |    (""
+      """.stripMargin.format(
+        lineRep.evalName, evalResult, executionWrapper, lineRep.readName + accessPath
+      )
+      
+      val postamble = """
+      |    )
+      |  }
+      |}
+      """.stripMargin
+      val generate = (m: MemberHandler) => m resultExtractionCode Request.this
+    }
+
+    // get it
+    def getEvalTyped[T] : Option[T] = getEval map (_.asInstanceOf[T])
+    def getEval: Option[AnyRef] = {
+      // ensure it has been compiled
+      compile
+      // try to load it and call the value method      
+      lineRep.evalValue filterNot (_ == null)
+    }
+
+    /** Compile the object file.  Returns whether the compilation succeeded.
+     *  If all goes well, the "types" map is computed. */
+    lazy val compile: Boolean = {
+      // error counting is wrong, hence interpreter may overlook failure - so we reset
+      reporter.reset()
+
+      // compile the object containing the user's code
+      lineRep.compile(ObjectSourceCode(handlers)) && {
+        // extract and remember types 
+        typeOf
+        typesOfDefinedTerms
+
+        // compile the result-extraction object
+        lineRep compile ResultObjectSourceCode(handlers)
+      }
+    }
+
+    lazy val resultSymbol = lineRep.resolvePathToSymbol(accessPath)
+    def applyToResultMember[T](name: Name, f: Symbol => T) = lineAfterTyper(f(resultSymbol.info.nonPrivateDecl(name)))
+
+    /* typeOf lookup with encoding */
+    def lookupTypeOf(name: Name) = typeOf.getOrElse(name, typeOf(global.encode(name.toString)))
+    def simpleNameOfType(name: TypeName) = (compilerTypeOf get name) map (_.typeSymbol.simpleName)
+    
+    private def typeMap[T](f: Type => T): Map[Name, T] = {
+      def toType(name: Name): T = {
+        // the types are all =>T; remove the =>
+        val tp1 = lineAfterTyper(resultSymbol.info.nonPrivateDecl(name).tpe match {
+          case NullaryMethodType(tp)  => tp
+          case tp                 => tp
+        })
+        // normalize non-public types so we don't see protected aliases like Self
+        lineAfterTyper(tp1 match {
+          case TypeRef(_, sym, _) if !sym.isPublic  => f(tp1.normalize)
+          case tp                                   => f(tp)
+        })
+      }
+      termNames ++ typeNames map (x => x -> toType(x)) toMap
+    }
+    /** Types of variables defined by this request. */
+    lazy val compilerTypeOf = typeMap[Type](x => x)
+    /** String representations of same. */
+    lazy val typeOf         = typeMap[String](_.toString)
+    
+    // lazy val definedTypes: Map[Name, Type] = {
+    //   typeNames map (x => x -> afterTyper(resultSymbol.info.nonPrivateDecl(x).tpe)) toMap
+    // }
+    lazy val definedSymbols: Map[Name, Symbol] = (
+      termNames.map(x => x -> applyToResultMember(x, x => x)) ++
+      typeNames.map(x => x -> compilerTypeOf.get(x).map(_.typeSymbol).getOrElse(NoSymbol))
+    ).toMap
+
+    lazy val typesOfDefinedTerms: Map[Name, Type] =
+      termNames map (x => x -> applyToResultMember(x, _.tpe)) toMap
+    
+    private def bindExceptionally(t: Throwable) = {
+      val ex: Exceptional =
+        if (isettings.showInternalStackTraces) Exceptional(t)
+        else new Exceptional(t) {
+          override def spanFn(frame: JavaStackFrame) = !(frame.className startsWith lineRep.evalPath)
+          override def contextPrelude = super.contextPrelude + "/* The repl internal portion of the stack trace is elided. */\n"
+        }
+        
+      quietBind("lastException", ex)
+      ex.contextHead + "\n(access lastException for the full trace)"
+    }
+    private def bindUnexceptionally(t: Throwable) = {
+      quietBind("lastException", t)
+      stackTraceString(t)
+    }
+
+    /** load and run the code using reflection */
+    def loadAndRun: (String, Boolean) = {
+      import interpreter.Line._
+      
+      def handleException(t: Throwable) = {
+        /** We turn off the binding to accomodate ticket #2817 */
+        withoutBindingLastException {
+          val message =
+            if (opt.richExes) bindExceptionally(unwrap(t))
+            else bindUnexceptionally(unwrap(t))
+          
+          (message, false)
+        }
+      }
+      
+      try {
+        val execution = lineManager.set(originalLine)(lineRep call "$export")
+        execution.await()
+        
+        execution.state match {
+          case Done       => ("" + execution.get(), true)
+          case Threw      =>
+            val ex = execution.caught()
+            if (isReplDebug)
+              ex.printStackTrace()
+
+            if (bindLastException) handleException(ex)
+            else throw ex
+          case Cancelled  => ("Execution interrupted by signal.\n", false)
+          case Running    => ("Execution still running! Seems impossible.", false)
+        }
+      }
+      finally lineManager.clear()
+    }
+
+    override def toString = "Request(line=%s, %s trees)".format(line, trees.size)
+  }
+
+  /** Returns the name of the most recent interpreter result.
+   *  Mostly this exists so you can conveniently invoke methods on
+   *  the previous result.
+   */
+  def mostRecentVar: String =
+    if (mostRecentlyHandledTree.isEmpty) ""
+    else "" + (mostRecentlyHandledTree.get match {
+      case x: ValOrDefDef           => x.name
+      case Assign(Ident(name), _)   => name
+      case ModuleDef(_, name, _)    => name
+      case _                        => naming.mostRecentVar
+    })
+  
+  private def requestForName(name: Name): Option[Request] = {
+    assert(definedNameMap != null, "definedNameMap is null")
+    definedNameMap get name
+  }
+
+  private def requestForIdent(line: String): Option[Request] = 
+    requestForName(newTermName(line)) orElse requestForName(newTypeName(line))
+    
+  def safeClass(name: String): Option[Symbol] = {
+    try Some(definitions.getClass(newTypeName(name)))
+    catch { case _: MissingRequirementError => None }
+  }
+  def safeModule(name: String): Option[Symbol] = {
+    try Some(definitions.getModule(newTermName(name)))
+    catch { case _: MissingRequirementError => None }
+  }
+
+  def definitionForName(name: Name): Option[MemberHandler] =
+    requestForName(name) flatMap { req =>
+      req.handlers find (_.definedNames contains name)
+    }
+  
+  def valueOfTerm(id: String): Option[AnyRef] =
+    requestForIdent(id) flatMap (_.getEval)
+
+  def classOfTerm(id: String): Option[JClass] =
+    valueOfTerm(id) map (_.getClass)    
+
+  def typeOfTerm(id: String): Option[Type] = newTermName(id) match {
+    case nme.ROOTPKG  => Some(definitions.RootClass.tpe)
+    case name         => requestForName(name) flatMap (_.compilerTypeOf get name)
+  }
+  def symbolOfTerm(id: String): Symbol =
+    requestForIdent(id) flatMap (_.definedSymbols get newTermName(id)) getOrElse NoSymbol
+
+  def runtimeClassAndTypeOfTerm(id: String): Option[(JClass, Type)] = {
+    for {
+      clazz <- classOfTerm(id)
+      tpe <- runtimeTypeOfTerm(id)
+      nonAnon <- new RichClass(clazz).supers.find(c => !(new RichClass(c).isScalaAnonymous))
+    } yield {
+      (nonAnon, tpe)
+    }
+  }
+  
+  def runtimeTypeOfTerm(id: String): Option[Type] = {
+    for {
+      tpe <- typeOfTerm(id)
+      clazz <- classOfTerm(id)
+      val staticSym = tpe.typeSymbol
+      runtimeSym <- safeClass(clazz.getName)
+      if runtimeSym != staticSym
+      if runtimeSym isSubClass staticSym
+    } yield {
+      runtimeSym.info
+    }
+  }
+  
+  // XXX literals.
+  // 1) Identifiers defined in the repl.
+  // 2) A path loadable via getModule.
+  // 3) Try interpreting it as an expression.
+  private var typeOfExpressionDepth = 0
+  def typeOfExpression(expr: String): Option[Type] = {
+    DBG("typeOfExpression(" + expr + ")")
+    if (typeOfExpressionDepth > 2) {
+      DBG("Terminating typeOfExpression recursion for expression: " + expr)
+      return None
+    }
+
+    def asQualifiedImport = {
+      val name = expr.takeWhile(_ != '.')
+      importedTermNamed(name) flatMap { sym =>
+        typeOfExpression(sym.fullName + expr.drop(name.length))
+      }
+    }
+    def asModule = safeModule(expr) map (_.tpe)
+    def asExpr = beSilentDuring {
+      val lhs = freshInternalVarName()
+      val line = "lazy val " + lhs + " = { " + expr + " } "
+
+      interpret(line, true) match {
+        case IR.Success => typeOfExpression(lhs)
+        case _          => None
+      }
+    }
+    
+    typeOfExpressionDepth += 1
+    try typeOfTerm(expr) orElse asModule orElse asExpr orElse asQualifiedImport
+    finally typeOfExpressionDepth -= 1
+  }
+  // def compileAndTypeExpr(expr: String): Option[Typer] = {
+  //   class TyperRun extends Run {
+  //     override def stopPhase(name: String) = name == "superaccessors"
+  //   }
+  // }
+    
+  protected def onlyTerms(xs: List[Name]) = xs collect { case x: TermName => x }
+  protected def onlyTypes(xs: List[Name]) = xs collect { case x: TypeName => x }
+    
+  def definedTerms   = onlyTerms(allDefinedNames) filterNot isInternalVarName
+  def definedTypes   = onlyTypes(allDefinedNames)
+  def definedSymbols = prevRequests.toSet flatMap ((x: Request) => x.definedSymbols.values)
+  
+  /** the previous requests this interpreter has processed */
+  private lazy val prevRequests      = mutable.ListBuffer[Request]()
+  private lazy val referencedNameMap = mutable.Map[Name, Request]()
+  private lazy val definedNameMap    = mutable.Map[Name, Request]()
+  protected def prevRequestList      = prevRequests.toList
+  private def allHandlers            = prevRequestList flatMap (_.handlers)
+  def allSeenTypes                   = prevRequestList flatMap (_.typeOf.values.toList) distinct
+  def allImplicits                   = allHandlers filter (_.definesImplicit) flatMap (_.definedNames)
+  def importHandlers                 = allHandlers collect { case x: ImportHandler => x }
+  
+  def visibleTermNames: List[Name] = definedTerms ++ importedTerms distinct
+
+  /** Another entry point for tab-completion, ids in scope */
+  def unqualifiedIds = visibleTermNames map (_.toString) filterNot (_ contains "$") sorted
+  
+  /** Parse the ScalaSig to find type aliases */
+  def aliasForType(path: String) = ByteCode.aliasForType(path)
+  
+  def withoutUnwrapping(op: => Unit): Unit = {
+    val saved = isettings.unwrapStrings
+    isettings.unwrapStrings = false
+    try op
+    finally isettings.unwrapStrings = saved
+  }
+  
+  def symbolDefString(sym: Symbol) = {
+    TypeStrings.quieter(
+      afterTyper(sym.defString),
+      sym.owner.name + ".this.",
+      sym.owner.fullName + "."
+    )
+  }
+  
+  def showCodeIfDebugging(code: String) {
+    /** Secret bookcase entrance for repl debuggers: end the line
+     *  with "// show" and see what's going on.
+     */
+    if (code.lines exists (_.trim endsWith "// show")) {
+      echo(code)
+      parse(code) foreach (ts => ts foreach (t => withoutUnwrapping(DBG(asCompactString(t)))))
+    }
+  }
+  // debugging
+  def debugging[T](msg: String)(res: T) = {
+    DBG(msg + " " + res)
+    res
+  }
+  def DBG(s: => String) = if (isReplDebug) {
+    //try repldbg(s)
+    //catch { case x: AssertionError => repldbg("Assertion error printing debug string:\n  " + x) }
+  }
+}
+
+/** Utility methods for the Interpreter. */
+object SparkIMain {
+  // The two name forms this is catching are the two sides of this assignment:
+  //
+  // $line3.$read.$iw.$iw.Bippy = 
+  //   $line3.$read$$iw$$iw$Bippy@4a6a00ca
+  private def removeLineWrapper(s: String) = s.replaceAll("""\$line\d+[./]\$(read|eval|print)[$.]""", "")
+  private def removeIWPackages(s: String)  = s.replaceAll("""\$(iw|read|eval|print)[$.]""", "")
+  def stripString(s: String)               = removeIWPackages(removeLineWrapper(s))
+  
+  trait CodeAssembler[T] {
+    def preamble: String
+    def generate: T => String
+    def postamble: String
+
+    def apply(contributors: List[T]): String = stringFromWriter { code =>
+      code println preamble
+      contributors map generate foreach (code println _)
+      code println postamble
+    }
+  }
+  
+  trait StrippingWriter {
+    def isStripping: Boolean
+    def stripImpl(str: String): String
+    def strip(str: String): String = if (isStripping) stripImpl(str) else str
+  }
+  trait TruncatingWriter {
+    def maxStringLength: Int
+    def isTruncating: Boolean
+    def truncate(str: String): String = {
+      if (isTruncating && str.length > maxStringLength)
+        (str take maxStringLength - 3) + "..."
+      else str
+    }
+  }
+  abstract class StrippingTruncatingWriter(out: PrintWriter)
+          extends PrintWriter(out)
+             with StrippingWriter
+             with TruncatingWriter {
+    self =>
+ 
+    def clean(str: String): String = truncate(strip(str))
+    override def write(str: String) = super.write(clean(str))
+  }
+  class ReplStrippingWriter(intp: SparkIMain) extends StrippingTruncatingWriter(intp.out) {
+    import intp._
+    def maxStringLength    = isettings.maxPrintString
+    def isStripping        = isettings.unwrapStrings
+    def isTruncating       = reporter.truncationOK
+
+    def stripImpl(str: String): String = {
+      val cleaned = stripString(str)
+      var ctrlChars = 0
+      cleaned map { ch =>
+        if (ch.isControl && !ch.isWhitespace) {
+          ctrlChars += 1
+          if (ctrlChars > 5) return "[line elided for control chars: possibly a scala signature]"
+          else '?'
+        }
+        else ch
+      }
+    }
+  }
+
+  class ReplReporter(intp: SparkIMain) extends ConsoleReporter(intp.settings, null, new ReplStrippingWriter(intp)) {
+    override def printMessage(msg: String) {
+      // Avoiding deadlock when the compiler starts logging before
+      // the lazy val is done.
+      if (intp.isInitializeComplete) {
+        if (intp.totalSilence) ()
+        else super.printMessage(msg)
+      }
+      else Console.println(msg)
+    }
+  }  
+}
diff --git a/repl/src/main/scala/spark/repl/SparkISettings.scala b/repl/src/main/scala/spark/repl/SparkISettings.scala
new file mode 100644
index 0000000000..8ebb01d146
--- /dev/null
+++ b/repl/src/main/scala/spark/repl/SparkISettings.scala
@@ -0,0 +1,63 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2011 LAMP/EPFL
+ * @author Alexander Spoon
+ */
+
+package spark.repl
+
+import scala.tools.nsc._
+import scala.tools.nsc.interpreter._
+
+/** Settings for the interpreter
+ *
+ * @version 1.0
+ * @author Lex Spoon, 2007/3/24
+ **/
+class SparkISettings(intp: SparkIMain) {
+  /** A list of paths where :load should look */
+  var loadPath = List(".")
+  
+  /** Set this to true to see repl machinery under -Yrich-exceptions.
+   */
+  var showInternalStackTraces = false
+
+  /** The maximum length of toString to use when printing the result
+   *  of an evaluation.  0 means no maximum.  If a printout requires
+   *  more than this number of characters, then the printout is
+   *  truncated.
+   */
+  var maxPrintString = 800
+  
+  /** The maximum number of completion candidates to print for tab
+   *  completion without requiring confirmation.
+   */
+  var maxAutoprintCompletion = 250
+  
+  /** String unwrapping can be disabled if it is causing issues.
+   *  Settings this to false means you will see Strings like "$iw.$iw.".
+   */
+  var unwrapStrings = true
+  
+  def deprecation_=(x: Boolean) = {
+    val old = intp.settings.deprecation.value
+    intp.settings.deprecation.value = x
+    if (!old && x) println("Enabled -deprecation output.")
+    else if (old && !x) println("Disabled -deprecation output.")
+  }
+  def deprecation: Boolean = intp.settings.deprecation.value
+  
+  def allSettings = Map(
+    "maxPrintString" -> maxPrintString,
+    "maxAutoprintCompletion" -> maxAutoprintCompletion,
+    "unwrapStrings" -> unwrapStrings,
+    "deprecation" -> deprecation
+  )
+  
+  private def allSettingsString =
+    allSettings.toList sortBy (_._1) map { case (k, v) => "  " + k + " = " + v + "\n" } mkString
+    
+  override def toString = """
+    | SparkISettings {
+    | %s
+    | }""".stripMargin.format(allSettingsString)
+}
diff --git a/repl/src/main/scala/spark/repl/SparkImports.scala b/repl/src/main/scala/spark/repl/SparkImports.scala
new file mode 100644
index 0000000000..e62c9245ea
--- /dev/null
+++ b/repl/src/main/scala/spark/repl/SparkImports.scala
@@ -0,0 +1,196 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2011 LAMP/EPFL
+ * @author  Paul Phillips
+ */
+
+package spark.repl
+
+import scala.tools.nsc._
+import scala.tools.nsc.interpreter._
+
+import scala.collection.{ mutable, immutable }
+
+trait SparkImports {
+  self: SparkIMain =>
+  
+  import global._
+  import definitions.{ ScalaPackage, JavaLangPackage, PredefModule }
+  import memberHandlers._
+  
+  /** Synthetic import handlers for the language defined imports. */
+  private def makeWildcardImportHandler(sym: Symbol): ImportHandler = {
+    val hd :: tl = sym.fullName.split('.').toList map newTermName
+    val tree = Import(
+      tl.foldLeft(Ident(hd): Tree)((x, y) => Select(x, y)),
+      List(ImportSelector(nme.WILDCARD, -1, null, -1))
+    )
+    tree setSymbol sym
+    new ImportHandler(tree)
+  }
+  
+  /** Symbols whose contents are language-defined to be imported. */
+  def languageWildcardSyms: List[Symbol] = List(JavaLangPackage, ScalaPackage, PredefModule)
+  def languageWildcards: List[Type] = languageWildcardSyms map (_.tpe)
+  def languageWildcardHandlers = languageWildcardSyms map makeWildcardImportHandler
+  
+  def importedTerms  = onlyTerms(importHandlers flatMap (_.importedNames))
+  def importedTypes  = onlyTypes(importHandlers flatMap (_.importedNames))
+  
+  /** Types which have been wildcard imported, such as:
+   *    val x = "abc" ; import x._  // type java.lang.String
+   *    import java.lang.String._   // object java.lang.String
+   *
+   *  Used by tab completion.
+   *
+   *  XXX right now this gets import x._ and import java.lang.String._,
+   *  but doesn't figure out import String._.  There's a lot of ad hoc
+   *  scope twiddling which should be swept away in favor of digging
+   *  into the compiler scopes.
+   */
+  def sessionWildcards: List[Type] = {
+    importHandlers flatMap {
+      case x if x.importsWildcard => x.targetType
+      case _                      => None
+    } distinct
+  }
+  def wildcardTypes = languageWildcards ++ sessionWildcards
+  
+  def languageSymbols        = languageWildcardSyms flatMap membersAtPickler
+  def sessionImportedSymbols = importHandlers flatMap (_.importedSymbols)
+  def importedSymbols        = languageSymbols ++ sessionImportedSymbols
+  def importedTermSymbols    = importedSymbols collect { case x: TermSymbol => x }
+  def importedTypeSymbols    = importedSymbols collect { case x: TypeSymbol => x }
+  def implicitSymbols        = importedSymbols filter (_.isImplicit)
+  
+  def importedTermNamed(name: String) = importedTermSymbols find (_.name.toString == name)
+
+  /** Tuples of (source, imported symbols) in the order they were imported.
+   */
+  def importedSymbolsBySource: List[(Symbol, List[Symbol])] = {
+    val lang    = languageWildcardSyms map (sym => (sym, membersAtPickler(sym)))
+    val session = importHandlers filter (_.targetType.isDefined) map { mh =>
+      (mh.targetType.get.typeSymbol, mh.importedSymbols)
+    }
+    
+    lang ++ session
+  }
+  def implicitSymbolsBySource: List[(Symbol, List[Symbol])] = {
+    importedSymbolsBySource map {
+      case (k, vs) => (k, vs filter (_.isImplicit))
+    } filterNot (_._2.isEmpty)
+  }
+  
+  /** Compute imports that allow definitions from previous
+   *  requests to be visible in a new request.  Returns
+   *  three pieces of related code:
+   *
+   *  1. An initial code fragment that should go before
+   *  the code of the new request.
+   *
+   *  2. A code fragment that should go after the code
+   *  of the new request.
+   *
+   *  3. An access path which can be traverested to access
+   *  any bindings inside code wrapped by #1 and #2 .
+   *
+   * The argument is a set of Names that need to be imported.
+   *
+   * Limitations: This method is not as precise as it could be.
+   * (1) It does not process wildcard imports to see what exactly
+   * they import.
+   * (2) If it imports any names from a request, it imports all
+   * of them, which is not really necessary.
+   * (3) It imports multiple same-named implicits, but only the
+   * last one imported is actually usable.
+   */
+  case class ComputedImports(prepend: String, append: String, access: String)
+  protected def importsCode(wanted: Set[Name]): ComputedImports = {
+    /** Narrow down the list of requests from which imports 
+     *  should be taken.  Removes requests which cannot contribute
+     *  useful imports for the specified set of wanted names.
+     */
+    case class ReqAndHandler(req: Request, handler: MemberHandler) { }
+    
+    def reqsToUse: List[ReqAndHandler] = {      
+      /** Loop through a list of MemberHandlers and select which ones to keep.
+        * 'wanted' is the set of names that need to be imported.
+       */
+      def select(reqs: List[ReqAndHandler], wanted: Set[Name]): List[ReqAndHandler] = {
+        val isWanted = wanted contains _
+        // Single symbol imports might be implicits! See bug #1752.  Rather than
+        // try to finesse this, we will mimic all imports for now.
+        def keepHandler(handler: MemberHandler) = handler match {
+          case _: ImportHandler => true
+          case x                => x.definesImplicit || (x.definedNames exists isWanted)
+        }
+                   
+        reqs match {
+          case Nil                                    => Nil
+          case rh :: rest if !keepHandler(rh.handler) => select(rest, wanted)
+          case rh :: rest                             =>
+            import rh.handler._
+            val newWanted = wanted ++ referencedNames -- definedNames -- importedNames
+            rh :: select(rest, newWanted)
+        }
+      }
+      
+      /** Flatten the handlers out and pair each with the original request */
+      select(allReqAndHandlers reverseMap { case (r, h) => ReqAndHandler(r, h) }, wanted).reverse
+    }
+
+    val code, trailingBraces, accessPath = new StringBuilder
+    val currentImps = mutable.HashSet[Name]()
+
+    // add code for a new object to hold some imports
+    def addWrapper() {
+      val impname = nme.INTERPRETER_IMPORT_WRAPPER
+      code append "object %s {\n".format(impname)
+      trailingBraces append "}\n"
+      accessPath append ("." + impname)
+      
+      currentImps.clear
+    }
+
+    addWrapper()
+
+    // loop through previous requests, adding imports for each one
+    for (ReqAndHandler(req, handler) <- reqsToUse) {
+      handler match {
+        // If the user entered an import, then just use it; add an import wrapping
+        // level if the import might conflict with some other import
+        case x: ImportHandler =>
+          if (x.importsWildcard || (currentImps exists (x.importedNames contains _)))
+            addWrapper()
+          
+          code append (x.member + "\n")
+          
+          // give wildcard imports a import wrapper all to their own
+          if (x.importsWildcard) addWrapper()
+          else currentImps ++= x.importedNames
+
+        // For other requests, import each defined name.
+        // import them explicitly instead of with _, so that
+        // ambiguity errors will not be generated. Also, quote 
+        // the name of the variable, so that we don't need to 
+        // handle quoting keywords separately. 
+        case x =>
+          for (imv <- x.definedNames) {
+            if (currentImps contains imv) addWrapper()
+        
+            code append ("import %s\n" format (req fullPath imv))
+            currentImps += imv
+          }
+      }
+    }
+    // add one extra wrapper, to prevent warnings in the common case of
+    // redefining the value bound in the last interpreter request.
+    addWrapper()
+    ComputedImports(code.toString, trailingBraces.toString, accessPath.toString)
+  }
+  
+  private def allReqAndHandlers =
+    prevRequestList flatMap (req => req.handlers map (req -> _))
+
+  private def membersAtPickler(sym: Symbol): List[Symbol] =
+    atPickler(sym.info.nonPrivateMembers)
+}
diff --git a/repl/src/main/scala/spark/repl/SparkInteractiveReader.scala b/repl/src/main/scala/spark/repl/SparkInteractiveReader.scala
deleted file mode 100644
index 4f5a0a6fa0..0000000000
--- a/repl/src/main/scala/spark/repl/SparkInteractiveReader.scala
+++ /dev/null
@@ -1,60 +0,0 @@
-/* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
- * @author Stepan Koltsov
- */
-
-package spark.repl
-
-import scala.tools.nsc
-import scala.tools.nsc._
-import scala.tools.nsc.interpreter
-import scala.tools.nsc.interpreter._
-
-import scala.util.control.Exception._
-
-/** Reads lines from an input stream */
-trait SparkInteractiveReader {
-  import SparkInteractiveReader._
-  import java.io.IOException
-  
-  protected def readOneLine(prompt: String): String
-  val interactive: Boolean
-  
-  def readLine(prompt: String): String = {
-    def handler: Catcher[String] = {
-      case e: IOException if restartSystemCall(e) => readLine(prompt)
-    }
-    catching(handler) { readOneLine(prompt) }
-  }
-  
-  // override if history is available
-  def history: Option[History] = None
-  def historyList = history map (_.asList) getOrElse Nil
-  
-  // override if completion is available
-  def completion: Option[SparkCompletion] = None
-    
-  // hack necessary for OSX jvm suspension because read calls are not restarted after SIGTSTP
-  private def restartSystemCall(e: Exception): Boolean =
-    Properties.isMac && (e.getMessage == msgEINTR)
-}
-
-
-object SparkInteractiveReader {
-  val msgEINTR = "Interrupted system call"
-  private val exes = List(classOf[Exception], classOf[NoClassDefFoundError])
-  
-  def createDefault(): SparkInteractiveReader = createDefault(null)
-  
-  /** Create an interactive reader.  Uses <code>JLineReader</code> if the
-   *  library is available, but otherwise uses a <code>SimpleReader</code>. 
-   */
-  def createDefault(interpreter: SparkInterpreter): SparkInteractiveReader =
-    try new SparkJLineReader(interpreter)
-    catch {
-      case e @ (_: Exception | _: NoClassDefFoundError) =>
-        // println("Failed to create SparkJLineReader(%s): %s".format(interpreter, e))
-        new SparkSimpleReader
-    }
-}
-
diff --git a/repl/src/main/scala/spark/repl/SparkInterpreter.scala b/repl/src/main/scala/spark/repl/SparkInterpreter.scala
deleted file mode 100644
index 10ea346658..0000000000
--- a/repl/src/main/scala/spark/repl/SparkInterpreter.scala
+++ /dev/null
@@ -1,1395 +0,0 @@
-/* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
- * @author  Martin Odersky
- */
-
-package spark.repl
-
-import scala.tools.nsc
-import scala.tools.nsc._
-
-import Predef.{ println => _, _ }
-import java.io.{ File, IOException, PrintWriter, StringWriter, Writer }
-import File.pathSeparator
-import java.lang.{ Class, ClassLoader }
-import java.net.{ MalformedURLException, URL }
-import java.lang.reflect
-import reflect.InvocationTargetException
-import java.util.UUID
-
-import scala.PartialFunction.{ cond, condOpt }
-import scala.tools.util.PathResolver
-import scala.reflect.Manifest
-import scala.collection.mutable
-import scala.collection.mutable.{ ListBuffer, HashSet, HashMap, ArrayBuffer }
-import scala.collection.immutable.Set
-import scala.tools.nsc.util.ScalaClassLoader
-import ScalaClassLoader.URLClassLoader
-import scala.util.control.Exception.{ Catcher, catching, ultimately, unwrapping }
-
-import io.{ PlainFile, VirtualDirectory }
-import reporters.{ ConsoleReporter, Reporter }
-import symtab.{ Flags, Names }
-import util.{ SourceFile, BatchSourceFile, ScriptSourceFile, ClassPath, Chars, stringFromWriter }
-import scala.reflect.NameTransformer
-import scala.tools.nsc.{ InterpreterResults => IR }
-import interpreter._
-import SparkInterpreter._
-
-import spark.HttpServer
-import spark.Utils
-
-/** <p>
- *    An interpreter for Scala code.
- *  </p>
- *  <p>
- *    The main public entry points are <code>compile()</code>,
- *    <code>interpret()</code>, and <code>bind()</code>.
- *    The <code>compile()</code> method loads a
- *    complete Scala file.  The <code>interpret()</code> method executes one
- *    line of Scala code at the request of the user.  The <code>bind()</code>
- *    method binds an object to a variable that can then be used by later
- *    interpreted code.
- *  </p>
- *  <p>
- *    The overall approach is based on compiling the requested code and then
- *    using a Java classloader and Java reflection to run the code
- *    and access its results.
- *  </p>
- *  <p>  
- *    In more detail, a single compiler instance is used
- *    to accumulate all successfully compiled or interpreted Scala code.  To
- *    "interpret" a line of code, the compiler generates a fresh object that
- *    includes the line of code and which has public member(s) to export
- *    all variables defined by that code.  To extract the result of an
- *    interpreted line to show the user, a second "result object" is created
- *    which imports the variables exported by the above object and then
- *    exports a single member named "scala_repl_result".  To accomodate user expressions
- *    that read from variables or methods defined in previous statements, "import"
- *    statements are used.
- *  </p>
- *  <p>
- *    This interpreter shares the strengths and weaknesses of using the
- *    full compiler-to-Java.  The main strength is that interpreted code
- *    behaves exactly as does compiled code, including running at full speed.
- *    The main weakness is that redefining classes and methods is not handled
- *    properly, because rebinding at the Java level is technically difficult.
- *  </p>
- *
- * @author Moez A. Abdel-Gawad
- * @author Lex Spoon
- */
-class SparkInterpreter(val settings: Settings, out: PrintWriter) {
-  repl =>
-  
-  def println(x: Any) = {
-    out.println(x)
-    out.flush()
-  }
-  
-  /** construct an interpreter that reports to Console */
-  def this(settings: Settings) = this(settings, new NewLinePrintWriter(new ConsoleWriter, true))
-  def this() = this(new Settings())
-  
-  val SPARK_DEBUG_REPL: Boolean = (System.getenv("SPARK_DEBUG_REPL") == "1")
-
-  /** Local directory to save .class files too */
-  val outputDir = {
-    val tmp = System.getProperty("java.io.tmpdir")
-    val rootDir = System.getProperty("spark.repl.classdir", tmp)
-    Utils.createTempDir(rootDir)
-  }
-  if (SPARK_DEBUG_REPL) {
-    println("Output directory: " + outputDir)
-  }
-
-  /** Scala compiler virtual directory for outputDir */
-  //val virtualDirectory = new VirtualDirectory("(memory)", None)
-  val virtualDirectory = new PlainFile(outputDir)
-
-  /** Jetty server that will serve our classes to worker nodes */
-  val classServer = new HttpServer(outputDir)
-
-  // Start the classServer and store its URI in a spark system property
-  // (which will be passed to executors so that they can connect to it)
-  classServer.start()
-  System.setProperty("spark.repl.class.uri", classServer.uri)
-  if (SPARK_DEBUG_REPL) {
-    println("Class server started, URI = " + classServer.uri)
-  }
-  
-  /** reporter */
-  object reporter extends ConsoleReporter(settings, null, out) {
-    override def printMessage(msg: String) {
-      out println clean(msg)
-      out.flush()
-    }
-  }
-
-  /** We're going to go to some trouble to initialize the compiler asynchronously.
-   *  It's critical that nothing call into it until it's been initialized or we will
-   *  run into unrecoverable issues, but the perceived repl startup time goes
-   *  through the roof if we wait for it.  So we initialize it with a future and
-   *  use a lazy val to ensure that any attempt to use the compiler object waits
-   *  on the future.
-   */
-  private val _compiler: Global = newCompiler(settings, reporter)
-  private def _initialize(): Boolean = {
-    val source = """
-      |// this is assembled to force the loading of approximately the
-      |// classes which will be loaded on the first expression anyway.
-      |class $repl_$init {
-      |  val x = "abc".reverse.length + (5 max 5)
-      |  scala.runtime.ScalaRunTime.stringOf(x)
-      |}
-      |""".stripMargin
-    
-    try {
-      new _compiler.Run() compileSources List(new BatchSourceFile("<init>", source))
-      if (isReplDebug || settings.debug.value)
-        println("Repl compiler initialized.")
-      true
-    } 
-    catch {
-      case MissingRequirementError(msg) => println("""
-        |Failed to initialize compiler: %s not found.
-        |** Note that as of 2.8 scala does not assume use of the java classpath.
-        |** For the old behavior pass -usejavacp to scala, or if using a Settings
-        |** object programatically, settings.usejavacp.value = true.""".stripMargin.format(msg)
-      )
-      false
-    }
-  }
-  
-  // set up initialization future
-  private var _isInitialized: () => Boolean = null
-  def initialize() = synchronized { 
-    if (_isInitialized == null)
-      _isInitialized = scala.concurrent.ops future _initialize()
-  }
-
-  /** the public, go through the future compiler */
-  lazy val compiler: Global = {
-    initialize()
-
-    // blocks until it is ; false means catastrophic failure
-    if (_isInitialized()) _compiler
-    else null
-  }
-
-  import compiler.{ Traverser, CompilationUnit, Symbol, Name, Type }
-  import compiler.{ 
-    Tree, TermTree, ValOrDefDef, ValDef, DefDef, Assign, ClassDef,
-    ModuleDef, Ident, Select, TypeDef, Import, MemberDef, DocDef,
-    ImportSelector, EmptyTree, NoType }
-  import compiler.{ nme, newTermName, newTypeName }
-  import nme.{ 
-    INTERPRETER_VAR_PREFIX, INTERPRETER_SYNTHVAR_PREFIX, INTERPRETER_LINE_PREFIX,
-    INTERPRETER_IMPORT_WRAPPER, INTERPRETER_WRAPPER_SUFFIX, USCOREkw
-  }
-  
-  import compiler.definitions
-  import definitions.{ EmptyPackage, getMember }
-
-  /** whether to print out result lines */
-  private[repl] var printResults: Boolean = true
-
-  /** Temporarily be quiet */
-  def beQuietDuring[T](operation: => T): T = {    
-    val wasPrinting = printResults    
-    ultimately(printResults = wasPrinting) {
-      printResults = false
-      operation
-    }
-  }
-  
-  /** whether to bind the lastException variable */
-  private var bindLastException = true
-  
-  /** Temporarily stop binding lastException */
-  def withoutBindingLastException[T](operation: => T): T = {
-    val wasBinding = bindLastException
-    ultimately(bindLastException = wasBinding) {
-      bindLastException = false
-      operation
-    }
-  }
-
-  /** interpreter settings */
-  lazy val isettings = new SparkInterpreterSettings(this)
-
-  /** Instantiate a compiler.  Subclasses can override this to
-   *  change the compiler class used by this interpreter. */
-  protected def newCompiler(settings: Settings, reporter: Reporter) = {
-    settings.outputDirs setSingleOutput virtualDirectory    
-    new Global(settings, reporter)
-  }
-  
-  /** the compiler's classpath, as URL's */
-  lazy val compilerClasspath: List[URL] = new PathResolver(settings) asURLs
-
-  /* A single class loader is used for all commands interpreted by this Interpreter.
-     It would also be possible to create a new class loader for each command
-     to interpret.  The advantages of the current approach are:
-
-       - Expressions are only evaluated one time.  This is especially
-         significant for I/O, e.g. "val x = Console.readLine"
-
-     The main disadvantage is:
-
-       - Objects, classes, and methods cannot be rebound.  Instead, definitions
-         shadow the old ones, and old code objects refer to the old
-         definitions.
-  */
-  private var _classLoader: ClassLoader = null
-  def resetClassLoader() = _classLoader = makeClassLoader()
-  def classLoader: ClassLoader = {
-    if (_classLoader == null)
-      resetClassLoader()
-    
-    _classLoader
-  }
-  private def makeClassLoader(): ClassLoader = {
-    /*
-    val parent =
-      if (parentClassLoader == null)  ScalaClassLoader fromURLs compilerClasspath
-      else                            new URLClassLoader(compilerClasspath, parentClassLoader)
-
-    new AbstractFileClassLoader(virtualDirectory, parent)
-    */
-    val parent =
-      if (parentClassLoader == null)
-        new java.net.URLClassLoader(compilerClasspath.toArray)
-      else
-         new java.net.URLClassLoader(compilerClasspath.toArray,
-                            parentClassLoader)
-    val virtualDirUrl = new URL("file://" + virtualDirectory.path + "/")
-    new java.net.URLClassLoader(Array(virtualDirUrl), parent)
-  }
-
-  private def loadByName(s: String): Class[_] = // (classLoader tryToInitializeClass s).get
-    Class.forName(s, true, classLoader)
-
-  private def methodByName(c: Class[_], name: String): reflect.Method =
-    c.getMethod(name, classOf[Object])
-  
-  protected def parentClassLoader: ClassLoader = this.getClass.getClassLoader()
-  def getInterpreterClassLoader() = classLoader
-
-  // Set the current Java "context" class loader to this interpreter's class loader
-  def setContextClassLoader() = Thread.currentThread.setContextClassLoader(classLoader)
-
-  /** the previous requests this interpreter has processed */
-  private val prevRequests = new ArrayBuffer[Request]()
-  private val usedNameMap = new HashMap[Name, Request]()
-  private val boundNameMap = new HashMap[Name, Request]()
-  private def allHandlers = prevRequests.toList flatMap (_.handlers)
-  private def allReqAndHandlers = prevRequests.toList flatMap (req => req.handlers map (req -> _))
-  
-  def printAllTypeOf = {
-    prevRequests foreach { req =>
-      req.typeOf foreach { case (k, v) => Console.println(k + " => " + v) }
-    }
-  }
-
-  /** Most recent tree handled which wasn't wholly synthetic. */
-  private def mostRecentlyHandledTree: Option[Tree] = {
-    for {
-      req <- prevRequests.reverse
-      handler <- req.handlers.reverse
-      name <- handler.generatesValue
-      if !isSynthVarName(name)
-    } return Some(handler.member)
-
-    None
-  }
-
-  def recordRequest(req: Request) {
-    def tripart[T](set1: Set[T], set2: Set[T]) = {
-      val intersect = set1 intersect set2
-      List(set1 -- intersect, intersect, set2 -- intersect)
-    }
-
-    prevRequests += req
-    req.usedNames foreach (x => usedNameMap(x) = req)
-    req.boundNames foreach (x => boundNameMap(x) = req)
-    
-    // XXX temporarily putting this here because of tricky initialization order issues
-    // so right now it's not bound until after you issue a command.
-    if (prevRequests.size == 1)
-      quietBind("settings", "spark.repl.SparkInterpreterSettings", isettings)
-
-    // println("\n  s1 = %s\n  s2 = %s\n  s3 = %s".format(
-    //   tripart(usedNameMap.keysIterator.toSet, boundNameMap.keysIterator.toSet): _*
-    // ))
-  }
-  
-  private def keyList[T](x: collection.Map[T, _]): List[T] = x.keys.toList sortBy (_.toString)
-  def allUsedNames = keyList(usedNameMap)
-  def allBoundNames = keyList(boundNameMap)
-  def allSeenTypes = prevRequests.toList flatMap (_.typeOf.values.toList) distinct
-  def allValueGeneratingNames = allHandlers flatMap (_.generatesValue)
-  def allImplicits = partialFlatMap(allHandlers) {
-    case x: MemberHandler if x.definesImplicit => x.boundNames
-  }
-
-  /** Generates names pre0, pre1, etc. via calls to apply method */
-  class NameCreator(pre: String) {
-    private var x = -1
-    var mostRecent: String = null
-    
-    def apply(): String = { 
-      x += 1
-      val name = pre + x.toString
-      // make sure we don't overwrite their unwisely named res3 etc.
-      mostRecent =
-        if (allBoundNames exists (_.toString == name)) apply()
-        else name
-      
-      mostRecent
-    }
-    def reset(): Unit = x = -1
-    def didGenerate(name: String) =
-      (name startsWith pre) && ((name drop pre.length) forall (_.isDigit))
-  }
-
-  /** allocate a fresh line name */
-  private lazy val lineNameCreator = new NameCreator(INTERPRETER_LINE_PREFIX)
-  
-  /** allocate a fresh var name */
-  private lazy val varNameCreator = new NameCreator(INTERPRETER_VAR_PREFIX)
-  
-  /** allocate a fresh internal variable name */
-  private lazy val synthVarNameCreator = new NameCreator(INTERPRETER_SYNTHVAR_PREFIX)
-
-  /** Check if a name looks like it was generated by varNameCreator */
-  private def isGeneratedVarName(name: String): Boolean = varNameCreator didGenerate name  
-  private def isSynthVarName(name: String): Boolean = synthVarNameCreator didGenerate name
-  private def isSynthVarName(name: Name): Boolean = synthVarNameCreator didGenerate name.toString
-  
-  def getVarName = varNameCreator()
-  def getSynthVarName = synthVarNameCreator()
-
-  /** Truncate a string if it is longer than isettings.maxPrintString */
-  private def truncPrintString(str: String): String = {
-    val maxpr = isettings.maxPrintString
-    val trailer = "..."
-    
-    if (maxpr <= 0 || str.length <= maxpr) str
-    else str.substring(0, maxpr-3) + trailer
-  }
-
-  /** Clean up a string for output */  
-  private def clean(str: String) = truncPrintString(
-    if (isettings.unwrapStrings && !SPARK_DEBUG_REPL) stripWrapperGunk(str)
-    else str
-  )
-
-  /** Heuristically strip interpreter wrapper prefixes
-   *  from an interpreter output string.
-   * MATEI: Copied from interpreter package object
-   */
-  def stripWrapperGunk(str: String): String = {
-    val wrapregex = """(line[0-9]+\$object[$.])?(\$?VAL.?)*(\$iwC?(.this)?[$.])*"""
-    str.replaceAll(wrapregex, "")
-  }
-
-  /** Indent some code by the width of the scala> prompt.
-   *  This way, compiler error messages read better.
-   */
-  private final val spaces = List.fill(7)(" ").mkString
-  def indentCode(code: String) = {
-    /** Heuristic to avoid indenting and thereby corrupting """-strings and XML literals. */
-    val noIndent = (code contains "\n") && (List("\"\"\"", "</", "/>") exists (code contains _))
-    stringFromWriter(str =>
-      for (line <- code.lines) {
-        if (!noIndent)
-          str.print(spaces)
-
-        str.print(line + "\n")
-        str.flush()
-      })
-  }
-  def indentString(s: String) = s split "\n" map (spaces + _ + "\n") mkString
-
-  implicit def name2string(name: Name) = name.toString
-
-  /** Compute imports that allow definitions from previous
-   *  requests to be visible in a new request.  Returns
-   *  three pieces of related code:
-   *
-   *  1. An initial code fragment that should go before
-   *  the code of the new request.
-   *
-   *  2. A code fragment that should go after the code
-   *  of the new request.
-   *
-   *  3. An access path which can be traverested to access
-   *  any bindings inside code wrapped by #1 and #2 .
-   *
-   * The argument is a set of Names that need to be imported.
-   *
-   * Limitations: This method is not as precise as it could be.
-   * (1) It does not process wildcard imports to see what exactly
-   * they import.
-   * (2) If it imports any names from a request, it imports all
-   * of them, which is not really necessary.
-   * (3) It imports multiple same-named implicits, but only the
-   * last one imported is actually usable.
-   */
-  private case class ComputedImports(prepend: String, append: String, access: String)
-  private def importsCode(wanted: Set[Name]): ComputedImports = {
-    /** Narrow down the list of requests from which imports 
-     *  should be taken.  Removes requests which cannot contribute
-     *  useful imports for the specified set of wanted names.
-     */
-    case class ReqAndHandler(req: Request, handler: MemberHandler) { }
-    
-    def reqsToUse: List[ReqAndHandler] = {      
-      /** Loop through a list of MemberHandlers and select which ones to keep.
-        * 'wanted' is the set of names that need to be imported.
-       */
-      def select(reqs: List[ReqAndHandler], wanted: Set[Name]): List[ReqAndHandler] = {
-        val isWanted = wanted contains _
-        // Single symbol imports might be implicits! See bug #1752.  Rather than
-        // try to finesse this, we will mimic all imports for now.
-        def keepHandler(handler: MemberHandler) = handler match {
-          case _: ImportHandler => true
-          case x                => x.definesImplicit || (x.boundNames exists isWanted)
-        }
-                   
-        reqs match {
-          case Nil                                    => Nil
-          case rh :: rest if !keepHandler(rh.handler) => select(rest, wanted)
-          case rh :: rest                             =>
-            val importedNames = rh.handler match { case x: ImportHandler => x.importedNames ; case _ => Nil }
-            import rh.handler._
-            val newWanted = wanted ++ usedNames -- boundNames -- importedNames
-            rh :: select(rest, newWanted)
-        }
-      }
-      
-      /** Flatten the handlers out and pair each with the original request */
-      select(allReqAndHandlers reverseMap  { case (r, h) => ReqAndHandler(r, h) }, wanted).reverse
-    }
-
-    val code, trailingLines, accessPath = new StringBuffer
-    val currentImps = HashSet[Name]()
-
-    // add code for a new object to hold some imports
-    def addWrapper() {
-      /*
-      val impname = INTERPRETER_IMPORT_WRAPPER
-      code append "object %s {\n".format(impname)
-      trailingLines append "}\n"
-      accessPath append ("." + impname)
-      currentImps.clear
-      */
-      val impname = INTERPRETER_IMPORT_WRAPPER
-      code.append("@serializable class " + impname + "C {\n")
-      trailingLines.append("}\nval " + impname + " = new " + impname + "C;\n")
-      accessPath.append("." + impname)
-      currentImps.clear
-    }
-
-    addWrapper()
-
-    // loop through previous requests, adding imports for each one
-    for (ReqAndHandler(req, handler) <- reqsToUse) {
-      handler match {
-        // If the user entered an import, then just use it; add an import wrapping
-        // level if the import might conflict with some other import
-        case x: ImportHandler =>
-          if (x.importsWildcard || (currentImps exists (x.importedNames contains _)))
-            addWrapper()
-          
-          code append (x.member.toString + "\n")
-          
-          // give wildcard imports a import wrapper all to their own
-          if (x.importsWildcard) addWrapper()
-          else currentImps ++= x.importedNames
-
-        // For other requests, import each bound variable.
-        // import them explicitly instead of with _, so that
-        // ambiguity errors will not be generated. Also, quote 
-        // the name of the variable, so that we don't need to 
-        // handle quoting keywords separately. 
-        case x =>
-          for (imv <- x.boundNames) {
-            // MATEI: Commented this check out because it was messing up for case classes
-            // (trying to import them twice within the same wrapper), but that is more likely
-            // due to a miscomputation of names that makes the code think they're unique.
-            // Need to evaluate whether having so many wrappers is a bad thing.
-            /*if (currentImps contains imv) */ addWrapper()
-        
-            code.append("val " + req.objectName + "$VAL = " + req.objectName + ".INSTANCE;\n")
-            code.append("import " + req.objectName + "$VAL" + req.accessPath + ".`" + imv + "`;\n")
-            
-            //code append ("import %s\n" format (req fullPath imv))
-            currentImps += imv
-          }
-      }
-    }
-    // add one extra wrapper, to prevent warnings in the common case of
-    // redefining the value bound in the last interpreter request.
-    addWrapper()
-    ComputedImports(code.toString, trailingLines.toString, accessPath.toString)
-  }
-
-  /** Parse a line into a sequence of trees. Returns None if the input is incomplete. */
-  private def parse(line: String): Option[List[Tree]] = {    
-    var justNeedsMore = false
-    reporter.withIncompleteHandler((pos,msg) => {justNeedsMore = true}) {
-      // simple parse: just parse it, nothing else
-      def simpleParse(code: String): List[Tree] = {
-        reporter.reset
-        val unit = new CompilationUnit(new BatchSourceFile("<console>", code))
-        val scanner = new compiler.syntaxAnalyzer.UnitParser(unit)
-        
-        scanner.templateStatSeq(false)._2
-      }
-      val trees = simpleParse(line)
-      
-      if (reporter.hasErrors)   Some(Nil)  // the result did not parse, so stop
-      else if (justNeedsMore)   None
-      else                      Some(trees)
-    }
-  }
-
-  /** Compile an nsc SourceFile.  Returns true if there are
-   *  no compilation errors, or false otherwise.
-   */
-  def compileSources(sources: SourceFile*): Boolean = {
-    reporter.reset
-    new compiler.Run() compileSources sources.toList
-    !reporter.hasErrors
-  }
-
-  /** Compile a string.  Returns true if there are no
-   *  compilation errors, or false otherwise.
-   */
-  def compileString(code: String): Boolean =
-    compileSources(new BatchSourceFile("<script>", code))
-  
-  def compileAndSaveRun(label: String, code: String) = {
-    if (SPARK_DEBUG_REPL)
-      println(code)
-    if (isReplDebug) {
-      parse(code) match {
-        case Some(trees)  => trees foreach (t => DBG(compiler.asCompactString(t)))
-        case _            => DBG("Parse error:\n\n" + code)
-      }
-    }
-    val run = new compiler.Run()
-    run.compileSources(List(new BatchSourceFile(label, code)))
-    run
-  }
-
-  /** Build a request from the user. <code>trees</code> is <code>line</code>
-   *  after being parsed.
-   */
-  private def buildRequest(line: String, lineName: String, trees: List[Tree]): Request =
-    new Request(line, lineName, trees)
-
-  private def chooseHandler(member: Tree): MemberHandler = member match {
-    case member: DefDef               => new DefHandler(member)
-    case member: ValDef               => new ValHandler(member)
-    case member@Assign(Ident(_), _)   => new AssignHandler(member)
-    case member: ModuleDef            => new ModuleHandler(member)
-    case member: ClassDef             => new ClassHandler(member)
-    case member: TypeDef              => new TypeAliasHandler(member)
-    case member: Import               => new ImportHandler(member)
-    case DocDef(_, documented)        => chooseHandler(documented)
-    case member                       => new GenericHandler(member)
-  }
-  
-  private def requestFromLine(line: String, synthetic: Boolean): Either[IR.Result, Request] = {
-    val trees = parse(indentCode(line)) match {
-      case None         => return Left(IR.Incomplete)
-      case Some(Nil)    => return Left(IR.Error) // parse error or empty input
-      case Some(trees)  => trees
-    }
-    
-    // use synthetic vars to avoid filling up the resXX slots
-    def varName = if (synthetic) getSynthVarName else getVarName
-
-    // Treat a single bare expression specially. This is necessary due to it being hard to
-    // modify code at a textual level, and it being hard to submit an AST to the compiler.
-    if (trees.size == 1) trees.head match {
-      case _:Assign                         => // we don't want to include assignments
-      case _:TermTree | _:Ident | _:Select  => // ... but do want these as valdefs.
-        return requestFromLine("val %s =\n%s".format(varName, line), synthetic)
-      case _                                =>
-    }
-        
-    // figure out what kind of request
-    Right(buildRequest(line, lineNameCreator(), trees))
-  }
-
-  /** <p>
-   *    Interpret one line of input.  All feedback, including parse errors
-   *    and evaluation results, are printed via the supplied compiler's 
-   *    reporter.  Values defined are available for future interpreted
-   *    strings.
-   *  </p>
-   *  <p>
-   *    The return value is whether the line was interpreter successfully,
-   *    e.g. that there were no parse errors.
-   *  </p>
-   *
-   *  @param line ...
-   *  @return     ...
-   */
-  def interpret(line: String): IR.Result = interpret(line, false)
-  def interpret(line: String, synthetic: Boolean): IR.Result = {
-    def loadAndRunReq(req: Request) = {
-      val (result, succeeded) = req.loadAndRun    
-      if (printResults || !succeeded)
-        out print clean(result)
-
-      // book-keeping
-      if (succeeded && !synthetic)
-        recordRequest(req)
-      
-      if (succeeded) IR.Success
-      else IR.Error
-    }
-    
-    if (compiler == null) IR.Error
-    else requestFromLine(line, synthetic) match {
-      case Left(result) => result
-      case Right(req)   => 
-        // null indicates a disallowed statement type; otherwise compile and
-        // fail if false (implying e.g. a type error)
-        if (req == null || !req.compile) IR.Error
-        else loadAndRunReq(req)
-    }
-  }
-
-  /** A name creator used for objects created by <code>bind()</code>. */
-  private lazy val newBinder = new NameCreator("binder")
-
-  /** Bind a specified name to a specified value.  The name may
-   *  later be used by expressions passed to interpret.
-   *
-   *  @param name      the variable name to bind
-   *  @param boundType the type of the variable, as a string
-   *  @param value     the object value to bind to it
-   *  @return          an indication of whether the binding succeeded
-   */
-  def bind(name: String, boundType: String, value: Any): IR.Result = {
-    val binderName = newBinder()
-
-    compileString("""
-      |object %s {
-      |  var value: %s = _
-      |  def set(x: Any) = value = x.asInstanceOf[%s]
-      |}
-    """.stripMargin.format(binderName, boundType, boundType))
-
-    val binderObject = loadByName(binderName)
-    val setterMethod = methodByName(binderObject, "set")
-    
-    setterMethod.invoke(null, value.asInstanceOf[AnyRef])
-    interpret("val %s = %s.value".format(name, binderName))
-  }
-  
-  def quietBind(name: String, boundType: String, value: Any): IR.Result = 
-    beQuietDuring { bind(name, boundType, value) }
-
-  /** Reset this interpreter, forgetting all user-specified requests. */
-  def reset() {
-    //virtualDirectory.clear
-    virtualDirectory.delete
-    virtualDirectory.create
-    resetClassLoader()
-    lineNameCreator.reset()
-    varNameCreator.reset()
-    prevRequests.clear
-  }
-
-  /** <p>
-   *    This instance is no longer needed, so release any resources
-   *    it is using.  The reporter's output gets flushed.
-   *  </p>
-   */
-  def close() {
-    reporter.flush
-    classServer.stop()
-  }
-
-  /** A traverser that finds all mentioned identifiers, i.e. things
-   *  that need to be imported.  It might return extra names.
-   */
-  private class ImportVarsTraverser extends Traverser {
-    val importVars = new HashSet[Name]()
-
-    override def traverse(ast: Tree) = ast match {
-      // XXX this is obviously inadequate but it's going to require some effort
-      // to get right.
-      case Ident(name) if !(name.toString startsWith "x$")  => importVars += name
-      case _                                                => super.traverse(ast)
-    }
-  }
-
-  /** Class to handle one member among all the members included
-   *  in a single interpreter request.
-   */
-  private sealed abstract class MemberHandler(val member: Tree) {
-    lazy val usedNames: List[Name] = {
-      val ivt = new ImportVarsTraverser()
-      ivt traverse member
-      ivt.importVars.toList
-    }
-    def boundNames: List[Name] = Nil
-    val definesImplicit = cond(member) {
-      case tree: MemberDef => tree.mods hasFlag Flags.IMPLICIT
-    }    
-    def generatesValue: Option[Name] = None
-
-    def extraCodeToEvaluate(req: Request, code: PrintWriter) { }
-    def resultExtractionCode(req: Request, code: PrintWriter) { }
-
-    override def toString = "%s(used = %s)".format(this.getClass.toString split '.' last, usedNames)
-  }
-
-  private class GenericHandler(member: Tree) extends MemberHandler(member)
-  
-  private class ValHandler(member: ValDef) extends MemberHandler(member) {
-    lazy val ValDef(mods, vname, _, _) = member    
-    lazy val prettyName = NameTransformer.decode(vname)
-    lazy val isLazy = mods hasFlag Flags.LAZY
-    
-    override lazy val boundNames = List(vname)
-    override def generatesValue = Some(vname)
-    
-    override def resultExtractionCode(req: Request, code: PrintWriter) {
-      val isInternal = isGeneratedVarName(vname) && req.typeOfEnc(vname) == "Unit"
-      if (!mods.isPublic || isInternal) return
-      
-      lazy val extractor = "scala.runtime.ScalaRunTime.stringOf(%s)".format(req fullPath vname)
-      
-      // if this is a lazy val we avoid evaluating it here
-      val resultString = if (isLazy) codegenln(false, "<lazy>") else extractor
-      val codeToPrint =
-        """ + "%s: %s = " + %s""".format(prettyName, string2code(req typeOf vname), resultString)
-      
-      code print codeToPrint
-    }
-  }
-
-  private class DefHandler(defDef: DefDef) extends MemberHandler(defDef) {
-    lazy val DefDef(mods, name, _, vparamss, _, _) = defDef
-    override lazy val boundNames = List(name)
-    // true if 0-arity
-    override def generatesValue =
-      if (vparamss.isEmpty || vparamss.head.isEmpty) Some(name)
-      else None
-
-    override def resultExtractionCode(req: Request, code: PrintWriter) =
-      if (mods.isPublic) code print codegenln(name, ": ", req.typeOf(name))
-  }
-
-  private class AssignHandler(member: Assign) extends MemberHandler(member) {
-    val lhs = member.lhs.asInstanceOf[Ident] // an unfortunate limitation
-    val helperName = newTermName(synthVarNameCreator())
-    override def generatesValue = Some(helperName)
-
-    override def extraCodeToEvaluate(req: Request, code: PrintWriter) =
-      code println """val %s = %s""".format(helperName, lhs)
-
-    /** Print out lhs instead of the generated varName */
-    override def resultExtractionCode(req: Request, code: PrintWriter) {
-      val lhsType = string2code(req typeOfEnc helperName)
-      val res = string2code(req fullPath helperName)
-      val codeToPrint = """ + "%s: %s = " + %s + "\n" """.format(lhs, lhsType, res)
-          
-      code println codeToPrint
-    }
-  }
-
-  private class ModuleHandler(module: ModuleDef) extends MemberHandler(module) {
-    lazy val ModuleDef(mods, name, _) = module
-    override lazy val boundNames = List(name)
-    override def generatesValue = Some(name)
-
-    override def resultExtractionCode(req: Request, code: PrintWriter) =
-      code println codegenln("defined module ", name)
-  }
-
-  private class ClassHandler(classdef: ClassDef) extends MemberHandler(classdef) {
-    lazy val ClassDef(mods, name, _, _) = classdef
-    override lazy val boundNames = 
-      name :: (if (mods hasFlag Flags.CASE) List(name.toTermName) else Nil)
-    
-    override def resultExtractionCode(req: Request, code: PrintWriter) =
-      code print codegenln("defined %s %s".format(classdef.keyword, name))
-  }
-
-  private class TypeAliasHandler(typeDef: TypeDef) extends MemberHandler(typeDef) {
-    lazy val TypeDef(mods, name, _, _) = typeDef
-    def isAlias() = mods.isPublic && compiler.treeInfo.isAliasTypeDef(typeDef)
-    override lazy val boundNames = if (isAlias) List(name) else Nil
-
-    override def resultExtractionCode(req: Request, code: PrintWriter) =
-      code println codegenln("defined type alias ", name)
-  }
-
-  private class ImportHandler(imp: Import) extends MemberHandler(imp) {
-    lazy val Import(expr, selectors) = imp
-    def targetType = stringToCompilerType(expr.toString) match {
-      case NoType => None
-      case x      => Some(x)
-    }
-    
-    private def selectorWild    = selectors filter (_.name == USCOREkw)   // wildcard imports, e.g. import foo._
-    private def selectorMasked  = selectors filter (_.rename == USCOREkw) // masking imports, e.g. import foo.{ bar => _ }      
-    private def selectorNames   = selectors map (_.name)
-    private def selectorRenames = selectors map (_.rename) filterNot (_ == null)
-    
-    /** Whether this import includes a wildcard import */
-    val importsWildcard = selectorWild.nonEmpty
-    
-    /** Complete list of names imported by a wildcard */
-    def wildcardImportedNames: List[Name] = (
-      for (tpe <- targetType ; if importsWildcard) yield
-        tpe.nonPrivateMembers filter (x => x.isMethod && x.isPublic) map (_.name) distinct
-    ).toList.flatten
-
-    /** The individual names imported by this statement */
-    /** XXX come back to this and see what can be done with wildcards now that
-     *  we know how to enumerate the identifiers.
-     */
-    val importedNames: List[Name] = 
-      selectorRenames filterNot (_ == USCOREkw) flatMap (x => List(x.toTypeName, x.toTermName))
-    
-    override def resultExtractionCode(req: Request, code: PrintWriter) =
-      code println codegenln(imp.toString)
-  }
-
-  /** One line of code submitted by the user for interpretation */
-  private class Request(val line: String, val lineName: String, val trees: List[Tree]) {
-    /** name to use for the object that will compute "line" */
-    def objectName = lineName + INTERPRETER_WRAPPER_SUFFIX
-
-    /** name of the object that retrieves the result from the above object */
-    def resultObjectName = "RequestResult$" + objectName
-
-    /** handlers for each tree in this request */
-    val handlers: List[MemberHandler] = trees map chooseHandler
-
-    /** all (public) names defined by these statements */
-    val boundNames = handlers flatMap (_.boundNames)
-
-    /** list of names used by this expression */
-    val usedNames: List[Name] = handlers flatMap (_.usedNames)
-    
-    /** def and val names */
-    def defNames = partialFlatMap(handlers) { case x: DefHandler => x.boundNames }
-    def valueNames = partialFlatMap(handlers) {
-      case x: AssignHandler => List(x.helperName)
-      case x: ValHandler    => boundNames
-      case x: ModuleHandler => List(x.name)
-    }
-
-    /** Code to import bound names from previous lines - accessPath is code to
-      * append to objectName to access anything bound by request.
-      */
-    val ComputedImports(importsPreamble, importsTrailer, accessPath) =
-      importsCode(Set.empty ++ usedNames)
-
-    /** Code to access a variable with the specified name */
-    def fullPath(vname: String): String = "%s.`%s`".format(objectName + ".INSTANCE" + accessPath, vname)
-
-    /** Code to access a variable with the specified name */
-    def fullPath(vname: Name): String = fullPath(vname.toString)
-
-    /** the line of code to compute */
-    def toCompute = line
-
-    /** generate the source code for the object that computes this request */
-    def objectSourceCode: String = stringFromWriter { code => 
-      val preamble = """
-        |@serializable class %s {
-        |  %s%s
-      """.stripMargin.format(objectName, importsPreamble, indentCode(toCompute))     
-      val postamble = importsTrailer + "\n}"
-
-      code println preamble
-      handlers foreach { _.extraCodeToEvaluate(this, code) }
-      code println postamble
-
-      //create an object
-      code.println("object " + objectName + " {")
-      code.println("  val INSTANCE = new " + objectName + "();")
-      code.println("}")
-    }
-
-    /** generate source code for the object that retrieves the result
-        from objectSourceCode */
-    def resultObjectSourceCode: String = stringFromWriter { code =>
-      /** We only want to generate this code when the result
-       *  is a value which can be referred to as-is.
-       */      
-      val valueExtractor = handlers.last.generatesValue match {
-        case Some(vname) if typeOf contains vname =>
-          """
-          |lazy val scala_repl_value = {
-          |  scala_repl_result
-          |  %s
-          |}""".stripMargin.format(fullPath(vname))
-        case _  => ""
-      }
-      
-      // first line evaluates object to make sure constructor is run
-      // initial "" so later code can uniformly be: + etc
-      val preamble = """
-      |object %s {
-      |  %s
-      |  val scala_repl_result: String = {
-      |    %s
-      |    (""
-      """.stripMargin.format(resultObjectName, valueExtractor, objectName + ".INSTANCE" + accessPath)
-      
-      val postamble = """
-      |    )
-      |  }
-      |}
-      """.stripMargin
-
-      code println preamble
-      if (printResults) {
-        handlers foreach { _.resultExtractionCode(this, code) }
-      }
-      code println postamble
-    }
-
-    // compile the object containing the user's code
-    lazy val objRun = compileAndSaveRun("<console>", objectSourceCode)
-
-    // compile the result-extraction object
-    lazy val extractionObjectRun = compileAndSaveRun("<console>", resultObjectSourceCode)
-
-    lazy val loadedResultObject = loadByName(resultObjectName)
-    
-    def extractionValue(): Option[AnyRef] = {
-      // ensure it has run
-      extractionObjectRun
-      
-      // load it and retrieve the value        
-      try Some(loadedResultObject getMethod "scala_repl_value" invoke loadedResultObject)
-      catch { case _: Exception => None }
-    }
-
-    /** Compile the object file.  Returns whether the compilation succeeded.
-     *  If all goes well, the "types" map is computed. */
-    def compile(): Boolean = {
-      // error counting is wrong, hence interpreter may overlook failure - so we reset
-      reporter.reset
-
-      // compile the main object
-      objRun
-      
-      // bail on error
-      if (reporter.hasErrors)
-        return false
-
-      // extract and remember types 
-      typeOf
-
-      // compile the result-extraction object
-      extractionObjectRun
-
-      // success
-      !reporter.hasErrors
-    }
-
-    def atNextPhase[T](op: => T): T = compiler.atPhase(objRun.typerPhase.next)(op)
-
-    /** The outermost wrapper object */
-    lazy val outerResObjSym: Symbol = getMember(EmptyPackage, newTermName(objectName).toTypeName)
-
-    /** The innermost object inside the wrapper, found by
-      * following accessPath into the outer one. */
-    lazy val resObjSym =
-      accessPath.split("\\.").foldLeft(outerResObjSym) { (sym, name) =>
-        if (name == "") sym else
-        atNextPhase(sym.info member newTermName(name))
-      }
-
-    /* typeOf lookup with encoding */
-    def typeOfEnc(vname: Name) = typeOf(compiler encode vname)
-
-    /** Types of variables defined by this request. */
-    lazy val typeOf: Map[Name, String] = {
-      def getTypes(names: List[Name], nameMap: Name => Name): Map[Name, String] = {
-        names.foldLeft(Map.empty[Name, String]) { (map, name) =>
-          val rawType = atNextPhase(resObjSym.info.member(name).tpe)
-          // the types are all =>T; remove the =>
-          val cleanedType = rawType match { 
-            case compiler.PolyType(Nil, rt) => rt
-            case rawType => rawType
-          }
-
-          map + (name -> atNextPhase(cleanedType.toString))
-        }
-      }
-
-      getTypes(valueNames, nme.getterToLocal(_)) ++ getTypes(defNames, identity)
-    }
-
-    /** load and run the code using reflection */
-    def loadAndRun: (String, Boolean) = {
-      val resultValMethod: reflect.Method = loadedResultObject getMethod "scala_repl_result"
-      // XXX if wrapperExceptions isn't type-annotated we crash scalac
-      val wrapperExceptions: List[Class[_ <: Throwable]] =
-        List(classOf[InvocationTargetException], classOf[ExceptionInInitializerError])
-      
-      /** We turn off the binding to accomodate ticket #2817 */
-      def onErr: Catcher[(String, Boolean)] = {
-        case t: Throwable if bindLastException =>
-          withoutBindingLastException {
-            quietBind("lastException", "java.lang.Throwable", t)
-            (stringFromWriter(t.printStackTrace(_)), false)
-          }
-      }
-      
-      catching(onErr) {
-        unwrapping(wrapperExceptions: _*) {
-          (resultValMethod.invoke(loadedResultObject).toString, true)
-        }
-      }
-    }
-    
-    override def toString = "Request(line=%s, %s trees)".format(line, trees.size)
-  }
-  
-  /** A container class for methods to be injected into the repl
-   *  in power mode.
-   */
-  object power {
-    lazy val compiler: repl.compiler.type = repl.compiler
-    import compiler.{ phaseNames, atPhase, currentRun }
-    
-    def mkContext(code: String = "") = compiler.analyzer.rootContext(mkUnit(code))
-    def mkAlias(name: String, what: String) = interpret("type %s = %s".format(name, what))
-    def mkSourceFile(code: String) = new BatchSourceFile("<console>", code)
-    def mkUnit(code: String) = new CompilationUnit(mkSourceFile(code))
-
-    def mkTree(code: String): Tree = mkTrees(code).headOption getOrElse EmptyTree
-    def mkTrees(code: String): List[Tree] = parse(code) getOrElse Nil
-    def mkTypedTrees(code: String*): List[compiler.Tree] = {
-      class TyperRun extends compiler.Run {
-        override def stopPhase(name: String) = name == "superaccessors"
-      }
-
-      reporter.reset
-      val run = new TyperRun
-      run compileSources (code.toList.zipWithIndex map {
-        case (s, i) => new BatchSourceFile("<console %d>".format(i), s)
-      })
-      run.units.toList map (_.body)
-    }
-    def mkTypedTree(code: String) = mkTypedTrees(code).head
-    def mkType(id: String): compiler.Type = stringToCompilerType(id)
-
-    def dump(): String = (
-      ("Names used: " :: allUsedNames) ++
-      ("\nIdentifiers: " :: unqualifiedIds)
-    ) mkString " "
-    
-    lazy val allPhases: List[Phase] = phaseNames map (currentRun phaseNamed _)
-    def atAllPhases[T](op: => T): List[(String, T)] = allPhases map (ph => (ph.name, atPhase(ph)(op)))
-    def showAtAllPhases(op: => Any): Unit =
-      atAllPhases(op.toString) foreach { case (ph, op) => Console.println("%15s -> %s".format(ph, op take 240)) }
-  }
-  
-  def unleash(): Unit = beQuietDuring {
-    interpret("import scala.tools.nsc._")
-    repl.bind("repl", "spark.repl.SparkInterpreter", this)
-    interpret("val global: repl.compiler.type = repl.compiler")
-    interpret("val power: repl.power.type = repl.power")
-    // interpret("val replVars = repl.replVars")
-  }
-  
-  /** Artificial object demonstrating completion */
-  // lazy val replVars = CompletionAware(
-  //   Map[String, CompletionAware](
-  //     "ids" -> CompletionAware(() => unqualifiedIds, completionAware _),
-  //     "synthVars" -> CompletionAware(() => allBoundNames filter isSynthVarName map (_.toString)),
-  //     "types" -> CompletionAware(() => allSeenTypes map (_.toString)),
-  //     "implicits" -> CompletionAware(() => allImplicits map (_.toString))
-  //   )
-  // )
-
-  /** Returns the name of the most recent interpreter result.
-   *  Mostly this exists so you can conveniently invoke methods on
-   *  the previous result.
-   */
-  def mostRecentVar: String =
-    if (mostRecentlyHandledTree.isEmpty) ""
-    else mostRecentlyHandledTree.get match {
-      case x: ValOrDefDef           => x.name
-      case Assign(Ident(name), _)   => name
-      case ModuleDef(_, name, _)    => name
-      case _                        => onull(varNameCreator.mostRecent)
-    }
-  
-  private def requestForName(name: Name): Option[Request] =
-    prevRequests.reverse find (_.boundNames contains name)
-
-  private def requestForIdent(line: String): Option[Request] = requestForName(newTermName(line))
-  
-  def stringToCompilerType(id: String): compiler.Type = {
-    // if it's a recognized identifier, the type of that; otherwise treat the
-    // String like a value (e.g. scala.collection.Map) .
-    def findType = typeForIdent(id) match {
-      case Some(x)  => definitions.getClass(newTermName(x)).tpe
-      case _        => definitions.getModule(newTermName(id)).tpe
-    }
-
-    try findType catch { case _: MissingRequirementError => NoType }
-  }
-    
-  def typeForIdent(id: String): Option[String] =
-    requestForIdent(id) flatMap (x => x.typeOf get newTermName(id))
-
-  def methodsOf(name: String) =
-    evalExpr[List[String]](methodsCode(name)) map (x => NameTransformer.decode(getOriginalName(x)))
-  
-  def completionAware(name: String) = {
-    // XXX working around "object is not a value" crash, i.e.
-    // import java.util.ArrayList ; ArrayList.<tab>
-    clazzForIdent(name) flatMap (_ => evalExpr[Option[CompletionAware]](asCompletionAwareCode(name)))
-  }
-    
-  def extractionValueForIdent(id: String): Option[AnyRef] =
-    requestForIdent(id) flatMap (_.extractionValue)
-  
-  /** Executes code looking for a manifest of type T.
-   */
-  def manifestFor[T: Manifest] =
-    evalExpr[Manifest[T]]("""manifest[%s]""".format(manifest[T]))
-
-  /** Executes code looking for an implicit value of type T.
-   */
-  def implicitFor[T: Manifest] = {
-    val s = manifest[T].toString
-    evalExpr[Option[T]]("{ def f(implicit x: %s = null): %s = x ; Option(f) }".format(s, s))
-    // We don't use implicitly so as to fail without failing.
-    // evalExpr[T]("""implicitly[%s]""".format(manifest[T]))
-  }
-  /** Executes code looking for an implicit conversion from the type
-   *  of the given identifier to CompletionAware.
-   */
-  def completionAwareImplicit[T](id: String) = {
-    val f1string = "%s => %s".format(typeForIdent(id).get, classOf[CompletionAware].getName)
-    val code = """{
-      |  def f(implicit x: (%s) = null): %s = x
-      |  val f1 = f
-      |  if (f1 == null) None else Some(f1(%s))
-      |}""".stripMargin.format(f1string, f1string, id)
-    
-    evalExpr[Option[CompletionAware]](code)
-  }
-
-  def clazzForIdent(id: String): Option[Class[_]] =
-    extractionValueForIdent(id) flatMap (x => Option(x) map (_.getClass))
-
-  private def methodsCode(name: String) =
-    "%s.%s(%s)".format(classOf[ReflectionCompletion].getName, "methodsOf", name)
-  
-  private def asCompletionAwareCode(name: String) =
-    "%s.%s(%s)".format(classOf[CompletionAware].getName, "unapply", name)
-
-  private def getOriginalName(name: String): String =
-    nme.originalName(newTermName(name)).toString
-
-  case class InterpreterEvalException(msg: String) extends Exception(msg)
-  def evalError(msg: String) = throw InterpreterEvalException(msg)
-  
-  /** The user-facing eval in :power mode wraps an Option.
-   */
-  def eval[T: Manifest](line: String): Option[T] =
-    try Some(evalExpr[T](line))
-    catch { case InterpreterEvalException(msg) => out println indentString(msg) ; None }
-
-  def evalExpr[T: Manifest](line: String): T = {
-    // Nothing means the type could not be inferred.
-    if (manifest[T] eq Manifest.Nothing)
-      evalError("Could not infer type: try 'eval[SomeType](%s)' instead".format(line))
-    
-    val lhs = getSynthVarName
-    beQuietDuring { interpret("val " + lhs + " = { " + line + " } ") }
-    
-    // TODO - can we meaningfully compare the inferred type T with
-    //   the internal compiler Type assigned to lhs?
-    // def assignedType = prevRequests.last.typeOf(newTermName(lhs))
-
-    val req = requestFromLine(lhs, true) match {
-      case Left(result) => evalError(result.toString)
-      case Right(req)   => req
-    }
-    if (req == null || !req.compile || req.handlers.size != 1)
-      evalError("Eval error.")
-      
-    try req.extractionValue.get.asInstanceOf[T] catch {
-      case e: Exception => evalError(e.getMessage)
-    }
-  }
-  
-  def interpretExpr[T: Manifest](code: String): Option[T] = beQuietDuring {
-    interpret(code) match {
-      case IR.Success =>
-        try prevRequests.last.extractionValue map (_.asInstanceOf[T])
-        catch { case e: Exception => out println e ; None }
-      case _ => None
-    }
-  }
-
-  /** Another entry point for tab-completion, ids in scope */
-  private def unqualifiedIdNames() = partialFlatMap(allHandlers) {
-    case x: AssignHandler => List(x.helperName)
-    case x: ValHandler    => List(x.vname)
-    case x: ModuleHandler => List(x.name)
-    case x: DefHandler    => List(x.name)
-    case x: ImportHandler => x.importedNames
-  } filterNot isSynthVarName
-  
-  /** Types which have been wildcard imported, such as:
-   *    val x = "abc" ; import x._  // type java.lang.String
-   *    import java.lang.String._   // object java.lang.String
-   *
-   *  Used by tab completion.
-   *
-   *  XXX right now this gets import x._ and import java.lang.String._,
-   *  but doesn't figure out import String._.  There's a lot of ad hoc
-   *  scope twiddling which should be swept away in favor of digging
-   *  into the compiler scopes.
-   */
-  def wildcardImportedTypes(): List[Type] = {
-    val xs = allHandlers collect { case x: ImportHandler if x.importsWildcard => x.targetType }
-    xs.flatten.reverse.distinct
-  }
-  
-  /** Another entry point for tab-completion, ids in scope */
-  def unqualifiedIds() = (unqualifiedIdNames() map (_.toString)).distinct.sorted
-
-  /** For static/object method completion */ 
-  def getClassObject(path: String): Option[Class[_]] = //classLoader tryToLoadClass path
-    try {
-      Some(Class.forName(path, true, classLoader))
-    } catch {
-      case e: Exception => None
-    }
-  
-  /** Parse the ScalaSig to find type aliases */
-  def aliasForType(path: String) = ByteCode.aliasForType(path)
-
-  // Coming soon  
-  // implicit def string2liftedcode(s: String): LiftedCode = new LiftedCode(s)
-  // case class LiftedCode(code: String) {
-  //   val lifted: String = {
-  //     beQuietDuring { interpret(code) }
-  //     eval2[String]("({ " + code + " }).toString")
-  //   }
-  //   def >> : String = lifted
-  // }
-  
-  // debugging
-  def isReplDebug = settings.Yrepldebug.value
-  def isCompletionDebug = settings.Ycompletion.value
-  def DBG(s: String) = if (isReplDebug) out println s else ()  
-}
-
-/** Utility methods for the Interpreter. */
-object SparkInterpreter {
-  
-  import scala.collection.generic.CanBuildFrom
-  def partialFlatMap[A, B, CC[X] <: Traversable[X]]
-    (coll: CC[A])
-    (pf: PartialFunction[A, CC[B]])
-    (implicit bf: CanBuildFrom[CC[A], B, CC[B]]) =
-  {
-    val b = bf(coll)
-    for (x <- coll collect pf)
-      b ++= x
-
-    b.result
-  }
-  
-  object DebugParam {
-    implicit def tuple2debugparam[T](x: (String, T))(implicit m: Manifest[T]): DebugParam[T] =
-      DebugParam(x._1, x._2)
-    
-    implicit def any2debugparam[T](x: T)(implicit m: Manifest[T]): DebugParam[T] =
-      DebugParam("p" + getCount(), x)
-    
-    private var counter = 0 
-    def getCount() = { counter += 1; counter }
-  }
-  case class DebugParam[T](name: String, param: T)(implicit m: Manifest[T]) {
-    val manifest = m
-    val typeStr = {
-      val str = manifest.toString      
-      // I'm sure there are more to be discovered...
-      val regexp1 = """(.*?)\[(.*)\]""".r
-      val regexp2str = """.*\.type#"""
-      val regexp2 = (regexp2str + """(.*)""").r
-      
-      (str.replaceAll("""\n""", "")) match {
-        case regexp1(clazz, typeArgs) => "%s[%s]".format(clazz, typeArgs.replaceAll(regexp2str, ""))
-        case regexp2(clazz)           => clazz
-        case _                        => str
-      }
-    }
-  }
-  def breakIf(assertion: => Boolean, args: DebugParam[_]*): Unit =
-    if (assertion) break(args.toList)
-
-  // start a repl, binding supplied args
-  def break(args: List[DebugParam[_]]): Unit = {
-    val intLoop = new SparkInterpreterLoop
-    intLoop.settings = new Settings(Console.println)
-    // XXX come back to the dot handling
-    intLoop.settings.classpath.value = "."
-    intLoop.createInterpreter
-    intLoop.in = SparkInteractiveReader.createDefault(intLoop.interpreter)
-    
-    // rebind exit so people don't accidentally call System.exit by way of predef
-    intLoop.interpreter.beQuietDuring {
-      intLoop.interpreter.interpret("""def exit = println("Type :quit to resume program execution.")""")
-      for (p <- args) {
-        intLoop.interpreter.bind(p.name, p.typeStr, p.param)
-        Console println "%s: %s".format(p.name, p.typeStr)
-      }
-    }
-    intLoop.repl()
-    intLoop.closeInterpreter
-  }
-  
-  def codegenln(leadingPlus: Boolean, xs: String*): String = codegen(leadingPlus, (xs ++ Array("\n")): _*)
-  def codegenln(xs: String*): String = codegenln(true, xs: _*)
-
-  def codegen(xs: String*): String = codegen(true, xs: _*)
-  def codegen(leadingPlus: Boolean, xs: String*): String = {
-    val front = if (leadingPlus) "+ " else ""
-    front + (xs map string2codeQuoted mkString " + ")
-  }
-  
-  def string2codeQuoted(str: String) = "\"" + string2code(str) + "\""
-
-  /** Convert a string into code that can recreate the string.
-   *  This requires replacing all special characters by escape
-   *  codes. It does not add the surrounding " marks.  */
-  def string2code(str: String): String = {    
-    val res = new StringBuilder
-    for (c <- str) c match {
-      case '"' | '\'' | '\\'  => res += '\\' ; res += c
-      case _ if c.isControl   => res ++= Chars.char2uescape(c)
-      case _                  => res += c
-    }
-    res.toString
-  }
-}
-
diff --git a/repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala b/repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala
deleted file mode 100644
index a118abf3ca..0000000000
--- a/repl/src/main/scala/spark/repl/SparkInterpreterLoop.scala
+++ /dev/null
@@ -1,662 +0,0 @@
-/* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
- * @author Alexander Spoon
- */
-
-package spark.repl
-
-import scala.tools.nsc
-import scala.tools.nsc._
-
-import Predef.{ println => _, _ }
-import java.io.{ BufferedReader, FileReader, PrintWriter }
-import java.io.IOException
-
-import scala.tools.nsc.{ InterpreterResults => IR }
-import scala.annotation.tailrec
-import scala.collection.mutable.ListBuffer
-import scala.concurrent.ops
-import util.{ ClassPath }
-import interpreter._
-import io.{ File, Process }
-
-import spark.SparkContext
-
-// Classes to wrap up interpreter commands and their results
-// You can add new commands by adding entries to val commands
-// inside InterpreterLoop.
-trait InterpreterControl {
-  self: SparkInterpreterLoop =>
-  
-  // the default result means "keep running, and don't record that line"
-  val defaultResult = Result(true, None)
-  
-  // a single interpreter command
-  sealed abstract class Command extends Function1[List[String], Result] {
-    def name: String
-    def help: String
-    def error(msg: String) = {
-      out.println(":" + name + " " + msg + ".")
-      Result(true, None)
-    }
-    def usage(): String
-  }
-  
-  case class NoArgs(name: String, help: String, f: () => Result) extends Command {
-    def usage(): String = ":" + name
-    def apply(args: List[String]) = if (args.isEmpty) f() else error("accepts no arguments")
-  }
-  
-  case class LineArg(name: String, help: String, f: (String) => Result) extends Command {
-    def usage(): String = ":" + name + " <line>"
-    def apply(args: List[String]) = f(args mkString " ")
-  }
-
-  case class OneArg(name: String, help: String, f: (String) => Result) extends Command {
-    def usage(): String = ":" + name + " <arg>"
-    def apply(args: List[String]) =
-      if (args.size == 1) f(args.head)
-      else error("requires exactly one argument")
-  }
-
-  case class VarArgs(name: String, help: String, f: (List[String]) => Result) extends Command {
-    def usage(): String = ":" + name + " [arg]"
-    def apply(args: List[String]) = f(args)
-  }
-
-  // the result of a single command
-  case class Result(keepRunning: Boolean, lineToRecord: Option[String])
-}
-
-/** The 
- *  <a href="http://scala-lang.org/" target="_top">Scala</a>
- *  interactive shell.  It provides a read-eval-print loop around
- *  the Interpreter class.
- *  After instantiation, clients should call the <code>main()</code> method.
- *
- *  <p>If no in0 is specified, then input will come from the console, and
- *  the class will attempt to provide input editing feature such as
- *  input history.
- *
- *  @author Moez A. Abdel-Gawad
- *  @author  Lex Spoon
- *  @version 1.2
- */
-class SparkInterpreterLoop(
-  in0: Option[BufferedReader], val out: PrintWriter, master: Option[String])
-extends InterpreterControl {
-  def this(in0: BufferedReader, out: PrintWriter, master: String) =
-    this(Some(in0), out, Some(master))
-  
-  def this(in0: BufferedReader, out: PrintWriter) =
-    this(Some(in0), out, None)
-
-  def this() = this(None, new PrintWriter(Console.out), None)
-
-  /** The input stream from which commands come, set by main() */
-  var in: SparkInteractiveReader = _
-
-  /** The context class loader at the time this object was created */
-  protected val originalClassLoader = Thread.currentThread.getContextClassLoader
-  
-  var settings: Settings = _          // set by main()
-  var interpreter: SparkInterpreter = _    // set by createInterpreter()
-    
-  // classpath entries added via :cp
-  var addedClasspath: String = ""
-
-  /** A reverse list of commands to replay if the user requests a :replay */
-  var replayCommandStack: List[String] = Nil
-
-  /** A list of commands to replay if the user requests a :replay */
-  def replayCommands = replayCommandStack.reverse
-
-  /** Record a command for replay should the user request a :replay */
-  def addReplay(cmd: String) = replayCommandStack ::= cmd
-
-  /** Close the interpreter and set the var to <code>null</code>. */
-  def closeInterpreter() {
-    if (interpreter ne null) {
-      interpreter.close
-      interpreter = null
-      Thread.currentThread.setContextClassLoader(originalClassLoader)
-    }
-  }
-
-  /** Create a new interpreter. */
-  def createInterpreter() {
-    if (addedClasspath != "")
-      settings.classpath append addedClasspath
-      
-    interpreter = new SparkInterpreter(settings, out) {
-      override protected def parentClassLoader = 
-        classOf[SparkInterpreterLoop].getClassLoader
-    }
-    interpreter.setContextClassLoader()
-    // interpreter.quietBind("settings", "spark.repl.SparkInterpreterSettings", interpreter.isettings)
-  }
-
-  /** print a friendly help message */
-  def printHelp() = {
-    out println "All commands can be abbreviated - for example :he instead of :help.\n"
-    val cmds = commands map (x => (x.usage, x.help))
-    val width: Int = cmds map { case (x, _) => x.length } max
-    val formatStr = "%-" + width + "s %s"
-    cmds foreach { case (usage, help) => out println formatStr.format(usage, help) }
-  } 
-  
-  /** Print a welcome message */
-  def printWelcome() {
-    plushln("""Welcome to
-      ____              __  
-     / __/__  ___ _____/ /__
-    _\ \/ _ \/ _ `/ __/  '_/
-   /___/ .__/\_,_/_/ /_/\_\   version 0.0
-      /_/                  
-""")
-
-    import Properties._
-    val welcomeMsg = "Using Scala %s (%s, Java %s)".format(
-      versionString, javaVmName, javaVersion) 
-    plushln(welcomeMsg)
-  }
-  
-  /** Show the history */
-  def printHistory(xs: List[String]) {
-    val defaultLines = 20
-    
-    if (in.history.isEmpty)
-      return println("No history available.")
-
-    val current = in.history.get.index
-    val count = try xs.head.toInt catch { case _: Exception => defaultLines }
-    val lines = in.historyList takeRight count
-    val offset = current - lines.size + 1
-
-    for ((line, index) <- lines.zipWithIndex)
-      println("%d %s".format(index + offset, line))
-  }
-  
-  /** Some print conveniences */
-  def println(x: Any) = out println x
-  def plush(x: Any) = { out print x ; out.flush() }
-  def plushln(x: Any) = { out println x ; out.flush() }
-  
-  /** Search the history */
-  def searchHistory(_cmdline: String) {
-    val cmdline = _cmdline.toLowerCase
-    
-    if (in.history.isEmpty)
-      return println("No history available.")
-    
-    val current = in.history.get.index
-    val offset = current - in.historyList.size + 1
-    
-    for ((line, index) <- in.historyList.zipWithIndex ; if line.toLowerCase contains cmdline)
-      println("%d %s".format(index + offset, line))
-  }
-  
-  /** Prompt to print when awaiting input */
-  val prompt = Properties.shellPromptString
-
-  // most commands do not want to micromanage the Result, but they might want
-  // to print something to the console, so we accomodate Unit and String returns.
-  object CommandImplicits {
-    implicit def u2ir(x: Unit): Result = defaultResult
-    implicit def s2ir(s: String): Result = {
-      out println s
-      defaultResult
-    }
-  }
-  
-  /** Standard commands **/
-  val standardCommands: List[Command] = {
-    import CommandImplicits._
-    List(
-       OneArg("cp", "add an entry (jar or directory) to the classpath", addClasspath),
-       NoArgs("help", "print this help message", printHelp),
-       VarArgs("history", "show the history (optional arg: lines to show)", printHistory),
-       LineArg("h?", "search the history", searchHistory),
-       OneArg("load", "load and interpret a Scala file", load),
-       NoArgs("power", "enable power user mode", power),
-       NoArgs("quit", "exit the interpreter", () => Result(false, None)),
-       NoArgs("replay", "reset execution and replay all previous commands", replay),
-       LineArg("sh", "fork a shell and run a command", runShellCmd),
-       NoArgs("silent", "disable/enable automatic printing of results", verbosity) 
-    )
-  }
-  
-  /** Power user commands */
-  var powerUserOn = false
-  val powerCommands: List[Command] = {
-    import CommandImplicits._
-    List(
-      OneArg("completions", "generate list of completions for a given String", completions),
-      NoArgs("dump", "displays a view of the interpreter's internal state", () => interpreter.power.dump())
-      
-      // VarArgs("tree", "displays ASTs for specified identifiers",
-      //   (xs: List[String]) => interpreter dumpTrees xs)
-      // LineArg("meta", "given code which produces scala code, executes the results",
-      //   (xs: List[String]) => )
-    )
-  }
-  
-  /** Available commands */
-  def commands: List[Command] = standardCommands ::: (if (powerUserOn) powerCommands else Nil)
-
-  def initializeSpark() {
-    interpreter.beQuietDuring {
-      command("""
-        spark.repl.Main.interp.out.println("Registering with Mesos...");
-        spark.repl.Main.interp.out.flush();
-        @transient val sc = spark.repl.Main.interp.createSparkContext();
-        sc.waitForRegister();
-        spark.repl.Main.interp.out.println("Spark context available as sc.");
-        spark.repl.Main.interp.out.flush();
-        """)
-      command("import spark.SparkContext._");
-    }
-    plushln("Type in expressions to have them evaluated.")
-    plushln("Type :help for more information.")
-  }
-
-  var sparkContext: SparkContext = null
-
-  def createSparkContext(): SparkContext = {
-    val master = this.master match {
-      case Some(m) => m
-      case None => {
-        val prop = System.getenv("MASTER")
-        if (prop != null) prop else "local"
-      }
-    }
-    sparkContext = new SparkContext(master, "Spark shell")
-    sparkContext
-  }
-
-  /** The main read-eval-print loop for the interpreter.  It calls
-   *  <code>command()</code> for each line of input, and stops when
-   *  <code>command()</code> returns <code>false</code>.
-   */
-  def repl() {
-    def readOneLine() = {
-      out.flush
-      in readLine prompt
-    }
-    // return false if repl should exit
-    def processLine(line: String): Boolean =
-      if (line eq null) false               // assume null means EOF
-      else command(line) match {
-        case Result(false, _)           => false
-        case Result(_, Some(finalLine)) => addReplay(finalLine) ; true
-        case _                          => true
-      }
-    
-    while (processLine(readOneLine)) { }
-  }
-
-  /** interpret all lines from a specified file */
-  def interpretAllFrom(file: File) {    
-    val oldIn = in
-    val oldReplay = replayCommandStack
-    
-    try file applyReader { reader =>
-      in = new SparkSimpleReader(reader, out, false)
-      plushln("Loading " + file + "...")
-      repl()
-    }
-    finally {
-      in = oldIn
-      replayCommandStack = oldReplay
-    }
-  }
-
-  /** create a new interpreter and replay all commands so far */
-  def replay() {
-    closeInterpreter()
-    createInterpreter()
-    for (cmd <- replayCommands) {
-      plushln("Replaying: " + cmd)  // flush because maybe cmd will have its own output
-      command(cmd)
-      out.println
-    }
-  }
-    
-  /** fork a shell and run a command */
-  def runShellCmd(line: String) {
-    // we assume if they're using :sh they'd appreciate being able to pipeline
-    interpreter.beQuietDuring {
-      interpreter.interpret("import _root_.scala.tools.nsc.io.Process.Pipe._")
-    }
-    val p = Process(line)
-    // only bind non-empty streams
-    def add(name: String, it: Iterator[String]) =
-      if (it.hasNext) interpreter.bind(name, "scala.List[String]", it.toList)
-    
-    List(("stdout", p.stdout), ("stderr", p.stderr)) foreach (add _).tupled
-  }
-  
-  def withFile(filename: String)(action: File => Unit) {
-    val f = File(filename)
-    
-    if (f.exists) action(f)
-    else out.println("That file does not exist")
-  }
-  
-  def load(arg: String) = {
-    var shouldReplay: Option[String] = None
-    withFile(arg)(f => {
-      interpretAllFrom(f)
-      shouldReplay = Some(":load " + arg)
-    })
-    Result(true, shouldReplay)
-  }
-
-  def addClasspath(arg: String): Unit = {
-    val f = File(arg).normalize
-    if (f.exists) {
-      addedClasspath = ClassPath.join(addedClasspath, f.path)
-      val totalClasspath = ClassPath.join(settings.classpath.value, addedClasspath)
-      println("Added '%s'.  Your new classpath is:\n%s".format(f.path, totalClasspath))
-      replay()
-    }
-    else out.println("The path '" + f + "' doesn't seem to exist.")
-  }
-  
-  def completions(arg: String): Unit = {
-    val comp = in.completion getOrElse { return println("Completion unavailable.") }
-    val xs  = comp completions arg
-
-    injectAndName(xs)
-  }
-  
-  def power() {
-    val powerUserBanner =
-      """** Power User mode enabled - BEEP BOOP      **
-        |** scala.tools.nsc._ has been imported      **
-        |** New vals! Try repl, global, power        **
-        |** New cmds! :help to discover them         **
-        |** New defs! Type power.<tab> to reveal     **""".stripMargin
-
-    powerUserOn = true
-    interpreter.unleash()    
-    injectOne("history", in.historyList)
-    in.completion foreach (x => injectOne("completion", x))
-    out println powerUserBanner
-  }
-  
-  def verbosity() = {
-    val old = interpreter.printResults
-    interpreter.printResults = !old
-    out.println("Switched " + (if (old) "off" else "on") + " result printing.")
-  }
-  
-  /** Run one command submitted by the user.  Two values are returned:
-    * (1) whether to keep running, (2) the line to record for replay,
-    * if any. */
-  def command(line: String): Result = {
-    def withError(msg: String) = {
-      out println msg
-      Result(true, None)
-    }
-    def ambiguous(cmds: List[Command]) = "Ambiguous: did you mean " + cmds.map(":" + _.name).mkString(" or ") + "?"
-
-    // not a command
-    if (!line.startsWith(":")) {
-      // Notice failure to create compiler
-      if (interpreter.compiler == null) return Result(false, None)
-      else return Result(true, interpretStartingWith(line))
-    }
-
-    val tokens = (line drop 1 split """\s+""").toList
-    if (tokens.isEmpty)
-      return withError(ambiguous(commands))
-    
-    val (cmd :: args) = tokens
-    
-    // this lets us add commands willy-nilly and only requires enough command to disambiguate
-    commands.filter(_.name startsWith cmd) match {
-      case List(x)  => x(args)
-      case Nil      => withError("Unknown command.  Type :help for help.")
-      case xs       => withError(ambiguous(xs))
-    }
-  }
-
-  private val CONTINUATION_STRING = "     | "
-  private val PROMPT_STRING = "scala> "
-  
-  /** If it looks like they're pasting in a scala interpreter
-   *  transcript, remove all the formatting we inserted so we
-   *  can make some sense of it.
-   */
-  private var pasteStamp: Long = 0
-
-  /** Returns true if it's long enough to quit. */
-  def updatePasteStamp(): Boolean = {
-    /* Enough milliseconds between readLines to call it a day. */
-    val PASTE_FINISH = 1000
-
-    val prevStamp = pasteStamp
-    pasteStamp = System.currentTimeMillis
-    
-    (pasteStamp - prevStamp > PASTE_FINISH)
-  
-  }
-  /** TODO - we could look for the usage of resXX variables in the transcript.
-   *  Right now backreferences to auto-named variables will break.
-   */
-  
-  /** The trailing lines complication was an attempt to work around the introduction
-   *  of newlines in e.g. email messages of repl sessions.  It doesn't work because
-   *  an unlucky newline can always leave you with a syntactically valid first line,
-   *  which is executed before the next line is considered.  So this doesn't actually
-   *  accomplish anything, but I'm leaving it in case I decide to try harder.
-   */
-  case class PasteCommand(cmd: String, trailing: ListBuffer[String] = ListBuffer[String]())
-  
-  /** Commands start on lines beginning with "scala>" and each successive
-   *  line which begins with the continuation string is appended to that command.
-   *  Everything else is discarded.  When the end of the transcript is spotted,
-   *  all the commands are replayed.
-   */
-  @tailrec private def cleanTranscript(lines: List[String], acc: List[PasteCommand]): List[PasteCommand] = lines match {
-    case Nil                                    => acc.reverse      
-    case x :: xs if x startsWith PROMPT_STRING  =>
-      val first = x stripPrefix PROMPT_STRING
-      val (xs1, xs2) = xs span (_ startsWith CONTINUATION_STRING)
-      val rest = xs1 map (_ stripPrefix CONTINUATION_STRING)
-      val result = (first :: rest).mkString("", "\n", "\n")
-      
-      cleanTranscript(xs2, PasteCommand(result) :: acc)
-      
-    case ln :: lns =>
-      val newacc = acc match {
-        case Nil => Nil
-        case PasteCommand(cmd, trailing) :: accrest =>
-          PasteCommand(cmd, trailing :+ ln) :: accrest
-      }
-      cleanTranscript(lns, newacc)
-  }
-
-  /** The timestamp is for safety so it doesn't hang looking for the end
-   *  of a transcript.  Ad hoc parsing can't be too demanding.  You can
-   *  also use ctrl-D to start it parsing.
-   */
-  @tailrec private def interpretAsPastedTranscript(lines: List[String]) {
-    val line = in.readLine("")
-    val finished = updatePasteStamp()
-
-    if (line == null || finished || line.trim == PROMPT_STRING.trim) {
-      val xs = cleanTranscript(lines.reverse, Nil)
-      println("Replaying %d commands from interpreter transcript." format xs.size)
-      for (PasteCommand(cmd, trailing) <- xs) {
-        out.flush()
-        def runCode(code: String, extraLines: List[String]) {
-          (interpreter interpret code) match {
-            case IR.Incomplete if extraLines.nonEmpty =>
-              runCode(code + "\n" + extraLines.head, extraLines.tail)
-            case _ => ()
-          }
-        }
-        runCode(cmd, trailing.toList)
-      }
-    }
-    else
-      interpretAsPastedTranscript(line :: lines)
-  }
-
-  /** Interpret expressions starting with the first line.
-    * Read lines until a complete compilation unit is available
-    * or until a syntax error has been seen.  If a full unit is
-    * read, go ahead and interpret it.  Return the full string
-    * to be recorded for replay, if any.
-    */
-  def interpretStartingWith(code: String): Option[String] = {
-    // signal completion non-completion input has been received
-    in.completion foreach (_.resetVerbosity())
-    
-    def reallyInterpret = interpreter.interpret(code) match {
-      case IR.Error       => None
-      case IR.Success     => Some(code)
-      case IR.Incomplete  =>
-        if (in.interactive && code.endsWith("\n\n")) {
-          out.println("You typed two blank lines.  Starting a new command.")
-          None
-        } 
-        else in.readLine(CONTINUATION_STRING) match {
-          case null =>
-            // we know compilation is going to fail since we're at EOF and the
-            // parser thinks the input is still incomplete, but since this is
-            // a file being read non-interactively we want to fail.  So we send
-            // it straight to the compiler for the nice error message.
-            interpreter.compileString(code)
-            None
-
-          case line => interpretStartingWith(code + "\n" + line)
-        }
-    }
-    
-    /** Here we place ourselves between the user and the interpreter and examine
-     *  the input they are ostensibly submitting.  We intervene in several cases:
-     * 
-     *  1) If the line starts with "scala> " it is assumed to be an interpreter paste.
-     *  2) If the line starts with "." (but not ".." or "./") it is treated as an invocation
-     *     on the previous result.
-     *  3) If the Completion object's execute returns Some(_), we inject that value
-     *     and avoid the interpreter, as it's likely not valid scala code.
-     */
-    if (code == "") None
-    else if (code startsWith PROMPT_STRING) {
-      updatePasteStamp()
-      interpretAsPastedTranscript(List(code))
-      None
-    }
-    else if (Completion.looksLikeInvocation(code) && interpreter.mostRecentVar != "") {
-      interpretStartingWith(interpreter.mostRecentVar + code)
-    }
-    else {
-      val result = for (comp <- in.completion ; res <- comp execute code) yield res
-      result match {
-        case Some(res)  => injectAndName(res) ; None   // completion took responsibility, so do not parse
-        case _          => reallyInterpret
-      }
-    }
-  }
-
-  // runs :load <file> on any files passed via -i
-  def loadFiles(settings: Settings) = settings match {
-    case settings: GenericRunnerSettings =>
-      for (filename <- settings.loadfiles.value) {
-        val cmd = ":load " + filename
-        command(cmd)
-        addReplay(cmd)
-        out.println()
-      }
-    case _ =>
-  }
-
-  def main(settings: Settings) {
-    this.settings = settings
-    createInterpreter()
-    
-    // sets in to some kind of reader depending on environmental cues
-    in = in0 match {
-      case Some(in0)  => new SparkSimpleReader(in0, out, true)
-      case None       =>        
-        // the interpreter is passed as an argument to expose tab completion info
-        if (settings.Xnojline.value || Properties.isEmacsShell) new SparkSimpleReader
-        else if (settings.noCompletion.value) SparkInteractiveReader.createDefault()
-        else SparkInteractiveReader.createDefault(interpreter)
-    }
-
-    loadFiles(settings)
-    try {
-      // it is broken on startup; go ahead and exit
-      if (interpreter.reporter.hasErrors) return
-      
-      printWelcome()
-      
-      // this is about the illusion of snappiness.  We call initialize()
-      // which spins off a separate thread, then print the prompt and try 
-      // our best to look ready.  Ideally the user will spend a
-      // couple seconds saying "wow, it starts so fast!" and by the time
-      // they type a command the compiler is ready to roll.
-      interpreter.initialize()
-      initializeSpark()
-      repl()
-    }
-    finally closeInterpreter()
-  }
-  
-  private def objClass(x: Any) = x.asInstanceOf[AnyRef].getClass
-  private def objName(x: Any) = {
-    val clazz = objClass(x)
-    val typeParams = clazz.getTypeParameters
-    val basename = clazz.getName
-    val tpString = if (typeParams.isEmpty) "" else "[%s]".format(typeParams map (_ => "_") mkString ", ")
-
-    basename + tpString
-  }
-
-  // injects one value into the repl; returns pair of name and class
-  def injectOne(name: String, obj: Any): Tuple2[String, String] = {
-    val className = objName(obj)
-    interpreter.quietBind(name, className, obj)
-    (name, className)
-  }
-  def injectAndName(obj: Any): Tuple2[String, String] = {
-    val name = interpreter.getVarName
-    val className = objName(obj)
-    interpreter.bind(name, className, obj)
-    (name, className)
-  }
-  
-  // injects list of values into the repl; returns summary string
-  def injectDebug(args: List[Any]): String = {
-    val strs = 
-      for ((arg, i) <- args.zipWithIndex) yield {
-        val varName = "p" + (i + 1)
-        val (vname, vtype) = injectOne(varName, arg)
-        vname + ": " + vtype
-      }
-    
-    if (strs.size == 0) "Set no variables."
-    else "Variables set:\n" + strs.mkString("\n")
-  }
-  
-  /** process command-line arguments and do as they request */
-  def main(args: Array[String]) {
-    def error1(msg: String) = out println ("scala: " + msg)
-    val command = new InterpreterCommand(args.toList, error1)
-    def neededHelp(): String =
-      (if (command.settings.help.value) command.usageMsg + "\n" else "") +
-      (if (command.settings.Xhelp.value) command.xusageMsg + "\n" else "")
-    
-    // if they asked for no help and command is valid, we call the real main
-    neededHelp() match {
-      case ""     => if (command.ok) main(command.settings) // else nothing
-      case help   => plush(help)
-    }
-  }
-}
-
diff --git a/repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala b/repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala
deleted file mode 100644
index ffa477785b..0000000000
--- a/repl/src/main/scala/spark/repl/SparkInterpreterSettings.scala
+++ /dev/null
@@ -1,112 +0,0 @@
-/* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
- * @author Alexander Spoon
- */
-
-package spark.repl
-
-import scala.tools.nsc
-import scala.tools.nsc._
-
-/** Settings for the interpreter
- *
- * @version 1.0
- * @author Lex Spoon, 2007/3/24
- **/
-class SparkInterpreterSettings(repl: SparkInterpreter) {
-  /** A list of paths where :load should look */
-  var loadPath = List(".")
-
-  /** The maximum length of toString to use when printing the result
-   *  of an evaluation.  0 means no maximum.  If a printout requires
-   *  more than this number of characters, then the printout is
-   *  truncated.
-   */
-  var maxPrintString = 800
-  
-  /** The maximum number of completion candidates to print for tab
-   *  completion without requiring confirmation.
-   */
-  var maxAutoprintCompletion = 250
-  
-  /** String unwrapping can be disabled if it is causing issues.
-   *  Settings this to false means you will see Strings like "$iw.$iw.".
-   */
-  var unwrapStrings = true
-  
-  def deprecation_=(x: Boolean) = {
-    val old = repl.settings.deprecation.value
-    repl.settings.deprecation.value = x
-    if (!old && x) println("Enabled -deprecation output.")
-    else if (old && !x) println("Disabled -deprecation output.")
-  }
-  def deprecation: Boolean = repl.settings.deprecation.value
-  
-  def allSettings = Map(
-    "maxPrintString" -> maxPrintString,
-    "maxAutoprintCompletion" -> maxAutoprintCompletion,
-    "unwrapStrings" -> unwrapStrings,
-    "deprecation" -> deprecation
-  )
-  
-  private def allSettingsString =
-    allSettings.toList sortBy (_._1) map { case (k, v) => "  " + k + " = " + v + "\n" } mkString
-    
-  override def toString = """
-    | SparkInterpreterSettings {
-    | %s
-    | }""".stripMargin.format(allSettingsString)
-}
-
-/* Utilities for the InterpreterSettings class
- *
- * @version 1.0
- * @author Lex Spoon, 2007/5/24
- */
-object SparkInterpreterSettings {  
-  /** Source code for the InterpreterSettings class.  This is 
-   *  used so that the interpreter is sure to have the code
-   *  available.
-   * 
-   *  XXX I'm not seeing why this degree of defensiveness is necessary.
-   *  If files are missing the repl's not going to work, it's not as if
-   *  we have string source backups for anything else.
-   */
-  val sourceCodeForClass =
-"""
-package scala.tools.nsc
-
-/** Settings for the interpreter
- *
- * @version 1.0
- * @author Lex Spoon, 2007/3/24
- **/
-class SparkInterpreterSettings(repl: Interpreter) {
-  /** A list of paths where :load should look */
-  var loadPath = List(".")
-
-  /** The maximum length of toString to use when printing the result
-   *  of an evaluation.  0 means no maximum.  If a printout requires
-   *  more than this number of characters, then the printout is
-   *  truncated.
-   */
-  var maxPrintString = 2400
-  
-  def deprecation_=(x: Boolean) = {
-    val old = repl.settings.deprecation.value
-    repl.settings.deprecation.value = x
-    if (!old && x) println("Enabled -deprecation output.")
-    else if (old && !x) println("Disabled -deprecation output.")
-  }
-  def deprecation: Boolean = repl.settings.deprecation.value
-  
-  override def toString =
-    "SparkInterpreterSettings {\n" +
-//    "  loadPath = " + loadPath + "\n" +
-    "  maxPrintString = " + maxPrintString + "\n" +
-    "}"
-}
-
-"""
-
-}
diff --git a/repl/src/main/scala/spark/repl/SparkCompletion.scala b/repl/src/main/scala/spark/repl/SparkJLineCompletion.scala
similarity index 60%
rename from repl/src/main/scala/spark/repl/SparkCompletion.scala
rename to repl/src/main/scala/spark/repl/SparkJLineCompletion.scala
index c6ed1860f0..5d12898732 100644
--- a/repl/src/main/scala/spark/repl/SparkCompletion.scala
+++ b/repl/src/main/scala/spark/repl/SparkJLineCompletion.scala
@@ -1,62 +1,31 @@
 /* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
+ * Copyright 2005-2011 LAMP/EPFL
  * @author Paul Phillips
  */
 
-
 package spark.repl
 
-import scala.tools.nsc
 import scala.tools.nsc._
-import scala.tools.nsc.interpreter
 import scala.tools.nsc.interpreter._
 
-import jline._
-import java.util.{ List => JList }
-import util.returning
-
-object SparkCompletion {  
-  def looksLikeInvocation(code: String) = (
-        (code != null)
-    &&  (code startsWith ".")
-    && !(code == ".")
-    && !(code startsWith "./")
-    && !(code startsWith "..")
-  )
-  
-  object Forwarder {
-    def apply(forwardTo: () => Option[CompletionAware]): CompletionAware = new CompletionAware {
-      def completions(verbosity: Int) = forwardTo() map (_ completions verbosity) getOrElse Nil
-      override def follow(s: String) = forwardTo() flatMap (_ follow s)
-    }
-  }
-}
-import SparkCompletion._
+import scala.tools.jline._
+import scala.tools.jline.console.completer._
+import Completion._
+import collection.mutable.ListBuffer
 
 // REPL completor - queries supplied interpreter for valid
 // completions based on current contents of buffer.
-class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput {
-  // verbosity goes up with consecutive tabs
-  private var verbosity: Int = 0
-  def resetVerbosity() = verbosity = 0
-  
-  def isCompletionDebug = repl.isCompletionDebug
-  def DBG(msg: => Any) = if (isCompletionDebug) println(msg.toString)
-  def debugging[T](msg: String): T => T = (res: T) => returning[T](res)(x => DBG(msg + x))
-  
-  lazy val global: repl.compiler.type = repl.compiler
+class JLineCompletion(val intp: SparkIMain) extends Completion with CompletionOutput {
+  val global: intp.global.type = intp.global
   import global._
   import definitions.{ PredefModule, RootClass, AnyClass, AnyRefClass, ScalaPackage, JavaLangPackage }
-
-  // XXX not yet used.
-  lazy val dottedPaths = {
-    def walk(tp: Type): scala.List[Symbol] = {
-      val pkgs = tp.nonPrivateMembers filter (_.isPackage)
-      pkgs ++ (pkgs map (_.tpe) flatMap walk)
-    }
-    walk(RootClass.tpe)
-  }
+  type ExecResult = Any
+  import intp.{ DBG, debugging, afterTyper }
   
+  // verbosity goes up with consecutive tabs
+  private var verbosity: Int = 0
+  def resetVerbosity() = verbosity = 0
+    
   def getType(name: String, isModule: Boolean) = {
     val f = if (isModule) definitions.getModule(_: Name) else definitions.getClass(_: Name)
     try Some(f(name).tpe)
@@ -69,53 +38,74 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
   trait CompilerCompletion {
     def tp: Type
     def effectiveTp = tp match {
-      case MethodType(Nil, resType) => resType
-      case PolyType(Nil, resType)   => resType
-      case _                        => tp
+      case MethodType(Nil, resType)   => resType
+      case NullaryMethodType(resType) => resType
+      case _                          => tp
     }
 
     // for some reason any's members don't show up in subclasses, which
     // we need so 5.<tab> offers asInstanceOf etc.
     private def anyMembers = AnyClass.tpe.nonPrivateMembers
-    def anyRefMethodsToShow = List("isInstanceOf", "asInstanceOf", "toString")
+    def anyRefMethodsToShow = Set("isInstanceOf", "asInstanceOf", "toString")
 
     def tos(sym: Symbol) = sym.name.decode.toString
     def memberNamed(s: String) = members find (x => tos(x) == s)
     def hasMethod(s: String) = methods exists (x => tos(x) == s)
-    
+
     // XXX we'd like to say "filterNot (_.isDeprecated)" but this causes the
     // compiler to crash for reasons not yet known.
-    def members     = (effectiveTp.nonPrivateMembers ++ anyMembers) filter (_.isPublic)
+    def members     = afterTyper((effectiveTp.nonPrivateMembers ++ anyMembers) filter (_.isPublic))
     def methods     = members filter (_.isMethod)
     def packages    = members filter (_.isPackage)
     def aliases     = members filter (_.isAliasType)
-    
+
     def memberNames   = members map tos
     def methodNames   = methods map tos
     def packageNames  = packages map tos
     def aliasNames    = aliases map tos
   }
-  
+
   object TypeMemberCompletion {
+    def apply(tp: Type, runtimeType: Type, param: NamedParam): TypeMemberCompletion = {
+      new TypeMemberCompletion(tp) {
+        var upgraded = false
+        lazy val upgrade = {
+          intp rebind param          
+          intp.reporter.printMessage("\nRebinding stable value %s from %s to %s".format(param.name, tp, param.tpe))
+          upgraded = true
+          new TypeMemberCompletion(runtimeType)
+        }
+        override def completions(verbosity: Int) = {
+          super.completions(verbosity) ++ (
+            if (verbosity == 0) Nil
+            else upgrade.completions(verbosity)
+          )
+        }
+        override def follow(s: String) = super.follow(s) orElse {
+          if (upgraded) upgrade.follow(s)
+          else None
+        }
+        override def alternativesFor(id: String) = super.alternativesFor(id) ++ (
+          if (upgraded) upgrade.alternativesFor(id)
+          else Nil
+        ) distinct
+      }
+    }
     def apply(tp: Type): TypeMemberCompletion = {
       if (tp.typeSymbol.isPackageClass) new PackageCompletion(tp)
       else new TypeMemberCompletion(tp)
     }
     def imported(tp: Type) = new ImportCompletion(tp)
   }
-  
-  class TypeMemberCompletion(val tp: Type) extends CompletionAware with CompilerCompletion {
+
+  class TypeMemberCompletion(val tp: Type) extends CompletionAware
+                                              with CompilerCompletion {
     def excludeEndsWith: List[String] = Nil
     def excludeStartsWith: List[String] = List("<") // <byname>, <repeated>, etc.
-    def excludeNames: List[String] = anyref.methodNames.filterNot(anyRefMethodsToShow.contains) ++ List("_root_")
+    def excludeNames: List[String] = (anyref.methodNames filterNot anyRefMethodsToShow) :+ "_root_"
     
     def methodSignatureString(sym: Symbol) = {
-      def asString = new MethodSymbolOutput(sym).methodString()
-      
-      if (isCompletionDebug)
-        repl.power.showAtAllPhases(asString)
-
-      atPhase(currentRun.typerPhase)(asString)
+      SparkIMain stripString afterTyper(new MethodSymbolOutput(sym).methodString())
     }
 
     def exclude(name: String): Boolean = (
@@ -139,7 +129,7 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
         if (alts.nonEmpty) "" :: alts else Nil
       }
 
-    override def toString = "TypeMemberCompletion(%s)".format(tp)
+    override def toString = "%s (%d members)".format(tp, members.size)
   }
   
   class PackageCompletion(tp: Type) extends TypeMemberCompletion(tp) {
@@ -165,32 +155,36 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
   
   // the unqualified vals/defs/etc visible in the repl
   object ids extends CompletionAware {
-    override def completions(verbosity: Int) = repl.unqualifiedIds ::: List("classOf")
-    // we try to use the compiler and fall back on reflection if necessary
-    // (which at present is for anything defined in the repl session.)
-    override def follow(id: String) =
+    override def completions(verbosity: Int) = intp.unqualifiedIds ++ List("classOf") //, "_root_")
+    // now we use the compiler for everything.
+    override def follow(id: String) = {
       if (completions(0) contains id) {
-        for (clazz <- repl clazzForIdent id) yield {
-          // XXX The isMemberClass check is a workaround for the crasher described
-          // in the comments of #3431.  The issue as described by iulian is:
-          //
-          // Inner classes exist as symbols
-          // inside their enclosing class, but also inside their package, with a mangled
-          // name (A$B). The mangled names should never be loaded, and exist only for the
-          // optimizer, which sometimes cannot get the right symbol, but it doesn't care
-          // and loads the bytecode anyway.
-          //
-          // So this solution is incorrect, but in the short term the simple fix is
-          // to skip the compiler any time completion is requested on a nested class.
-          if (clazz.isMemberClass) new InstanceCompletion(clazz)
-          else (typeOf(clazz.getName) map TypeMemberCompletion.apply) getOrElse new InstanceCompletion(clazz)
+        intp typeOfExpression id map { tpe =>
+          def default = TypeMemberCompletion(tpe)
+
+          // only rebinding vals in power mode for now.
+          if (!isReplPower) default
+          else intp runtimeClassAndTypeOfTerm id match {
+            case Some((clazz, runtimeType)) =>
+              val sym = intp.symbolOfTerm(id)
+              if (sym.isStable) {
+                val param = new NamedParam.Untyped(id, intp valueOfTerm id getOrElse null)
+                TypeMemberCompletion(tpe, runtimeType, param)
+              }
+              else default
+            case _        =>
+              default
+          }
         }
       }
-      else None
+      else
+        None
+    }
+    override def toString = "<repl ids> (%s)".format(completions(0).size)
   }
 
-  // wildcard imports in the repl like "import global._" or "import String._"
-  private def imported = repl.wildcardImportedTypes map TypeMemberCompletion.imported
+  // user-issued wildcard imports like "import global._" or "import String._"
+  private def imported = intp.sessionWildcards map TypeMemberCompletion.imported
 
   // literal Ints, Strings, etc.
   object literals extends CompletionAware {    
@@ -211,7 +205,13 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
   }
 
   // top level packages
-  object rootClass extends TypeMemberCompletion(RootClass.tpe) { }
+  object rootClass extends TypeMemberCompletion(RootClass.tpe) {
+    override def completions(verbosity: Int) = super.completions(verbosity) :+ "_root_"
+    override def follow(id: String) = id match {
+      case "_root_" => Some(this)
+      case _        => super.follow(id)
+    }    
+  }
   // members of Predef
   object predef extends TypeMemberCompletion(PredefModule.tpe) {
     override def excludeEndsWith    = super.excludeEndsWith ++ List("Wrapper", "ArrayOps")
@@ -252,14 +252,25 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
   }
 
   // the list of completion aware objects which should be consulted
+  // for top level unqualified, it's too noisy to let much in.
   lazy val topLevelBase: List[CompletionAware] = List(ids, rootClass, predef, scalalang, javalang, literals)
   def topLevel = topLevelBase ++ imported
+  def topLevelThreshold = 50
   
   // the first tier of top level objects (doesn't include file completion)
-  def topLevelFor(parsed: Parsed) = topLevel flatMap (_ completionsFor parsed)
+  def topLevelFor(parsed: Parsed): List[String] = {
+    val buf = new ListBuffer[String]
+    topLevel foreach { ca =>
+      buf ++= (ca completionsFor parsed)
+
+      if (buf.size > topLevelThreshold)
+        return buf.toList.sorted
+    }
+    buf.toList
+  }
 
   // the most recent result
-  def lastResult = Forwarder(() => ids follow repl.mostRecentVar)
+  def lastResult = Forwarder(() => ids follow intp.mostRecentVar)
 
   def lastResultFor(parsed: Parsed) = {
     /** The logic is a little tortured right now because normally '.' is
@@ -268,9 +279,9 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
     val xs = lastResult completionsFor parsed
     if (parsed.isEmpty) xs map ("." + _) else xs
   }
-  
+
   // chasing down results which won't parse
-  def execute(line: String): Option[Any] = {
+  def execute(line: String): Option[ExecResult] = {
     val parsed = Parsed(line)
     def noDotOrSlash = line forall (ch => ch != '.' && ch != '/')
     
@@ -286,9 +297,7 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
   def completions(buf: String): List[String] =
     topLevelFor(Parsed.dotted(buf + ".", buf.length + 1))
 
-  // jline's entry point
-  lazy val jline: ArgumentCompletor =
-    returning(new ArgumentCompletor(new JLineCompletion, new JLineDelimiter))(_ setStrict false)
+  def completer(): ScalaCompleter = new JLineTabCompletion
 
   /** This gets a little bit hairy.  It's no small feat delegating everything
    *  and also keeping track of exactly where the cursor is and where it's supposed
@@ -296,44 +305,47 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
    *  string in the list of completions, that means we are expanding a unique
    *  completion, so don't update the "last" buffer because it'll be wrong.
    */
-  class JLineCompletion extends Completor {
+  class JLineTabCompletion extends ScalaCompleter {
     // For recording the buffer on the last tab hit
     private var lastBuf: String = ""
     private var lastCursor: Int = -1
 
     // Does this represent two consecutive tabs?
-    def isConsecutiveTabs(buf: String, cursor: Int) = cursor == lastCursor && buf == lastBuf
-    
+    def isConsecutiveTabs(buf: String, cursor: Int) =
+      cursor == lastCursor && buf == lastBuf
+
     // Longest common prefix
-    def commonPrefix(xs: List[String]) =
-      if (xs.isEmpty) ""
-      else xs.reduceLeft(_ zip _ takeWhile (x => x._1 == x._2) map (_._1) mkString)
+    def commonPrefix(xs: List[String]): String = {
+      if (xs.isEmpty || xs.contains("")) ""
+      else xs.head.head match {
+        case ch =>
+          if (xs.tail forall (_.head == ch)) "" + ch + commonPrefix(xs map (_.tail))
+          else ""
+      }
+    }
 
     // This is jline's entry point for completion.
-    override def complete(_buf: String, cursor: Int, candidates: java.util.List[java.lang.String]): Int = {
-      val buf = onull(_buf)
+    override def complete(buf: String, cursor: Int): Candidates = {
       verbosity = if (isConsecutiveTabs(buf, cursor)) verbosity + 1 else 0
-      DBG("complete(%s, %d) last = (%s, %d), verbosity: %s".format(buf, cursor, lastBuf, lastCursor, verbosity))
+      DBG("\ncomplete(%s, %d) last = (%s, %d), verbosity: %s".format(buf, cursor, lastBuf, lastCursor, verbosity))
 
       // we don't try lower priority completions unless higher ones return no results.
-      def tryCompletion(p: Parsed, completionFunction: Parsed => List[String]): Option[Int] = {
-        completionFunction(p) match {
-          case Nil  => None
-          case xs   =>
-            // modify in place and return the position
-            xs.foreach(x => candidates.add(x))
-
-            // update the last buffer unless this is an alternatives list
-            if (xs contains "") Some(p.cursor)
-            else {
-              val advance = commonPrefix(xs)            
-              lastCursor = p.position + advance.length
-              lastBuf = (buf take p.position) + advance
-  
-              DBG("tryCompletion(%s, _) lastBuf = %s, lastCursor = %s, p.position = %s".format(p, lastBuf, lastCursor, p.position))
-              Some(p.position) 
-            }
-        }
+      def tryCompletion(p: Parsed, completionFunction: Parsed => List[String]): Option[Candidates] = {
+        val winners = completionFunction(p) 
+        if (winners.isEmpty)
+          return None
+        val newCursor =
+          if (winners contains "") p.cursor
+          else {
+            val advance = commonPrefix(winners)
+            lastCursor = p.position + advance.length
+            lastBuf = (buf take p.position) + advance
+            DBG("tryCompletion(%s, _) lastBuf = %s, lastCursor = %s, p.position = %s".format(
+              p, lastBuf, lastCursor, p.position))
+            p.position
+          }
+        
+        Some(Candidates(newCursor, winners))
       }
       
       def mkDotted      = Parsed.dotted(buf, cursor) withVerbosity verbosity
@@ -345,9 +357,23 @@ class SparkCompletion(val repl: SparkInterpreter) extends SparkCompletionOutput
         else tryCompletion(Parsed.dotted(buf drop 1, cursor), lastResultFor)
 
       def regularCompletion = tryCompletion(mkDotted, topLevelFor)
-      def fileCompletion    = tryCompletion(mkUndelimited, FileCompletion completionsFor _.buffer)
+      def fileCompletion    = 
+        if (!looksLikePath(buf)) None
+        else tryCompletion(mkUndelimited, FileCompletion completionsFor _.buffer)
       
-      (lastResultCompletion orElse regularCompletion orElse fileCompletion) getOrElse cursor
+      /** This is the kickoff point for all manner of theoretically possible compiler
+       *  unhappiness - fault may be here or elsewhere, but we don't want to crash the
+       *  repl regardless.  Hopefully catching Exception is enough, but because the
+       *  compiler still throws some Errors it may not be.
+       */
+      try {
+        (lastResultCompletion orElse regularCompletion orElse fileCompletion) getOrElse Candidates(cursor, Nil)
+      }
+      catch {
+        case ex: Exception =>
+          DBG("Error: complete(%s, %s) provoked %s".format(buf, cursor, ex))
+          Candidates(cursor, List(" ", "<completion error: " + ex.getMessage +  ">"))
+      }
     }
   }
 }
diff --git a/repl/src/main/scala/spark/repl/SparkJLineReader.scala b/repl/src/main/scala/spark/repl/SparkJLineReader.scala
index 9d761c06fc..f7b0261ad0 100644
--- a/repl/src/main/scala/spark/repl/SparkJLineReader.scala
+++ b/repl/src/main/scala/spark/repl/SparkJLineReader.scala
@@ -1,38 +1,79 @@
 /* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
+ * Copyright 2005-2011 LAMP/EPFL
  * @author Stepan Koltsov
  */
 
 package spark.repl
 
-import scala.tools.nsc
 import scala.tools.nsc._
-import scala.tools.nsc.interpreter
 import scala.tools.nsc.interpreter._
 
-import java.io.File
-import jline.{ ConsoleReader, ArgumentCompletor, History => JHistory }
+import scala.tools.jline.console.ConsoleReader
+import scala.tools.jline.console.completer._
+import session._
+import scala.collection.JavaConverters._
+import Completion._
+import io.Streamable.slurp
 
 /** Reads from the console using JLine */
-class SparkJLineReader(interpreter: SparkInterpreter) extends SparkInteractiveReader {
-  def this() = this(null)
-  
-  override lazy val history = Some(History(consoleReader))
-  override lazy val completion = Option(interpreter) map (x => new SparkCompletion(x))
+class SparkJLineReader(val completion: Completion) extends InteractiveReader {
+  val interactive = true
+  lazy val history: JLineHistory = JLineHistory()
+  lazy val keyBindings =
+    try KeyBinding parse slurp(term.getDefaultBindings)
+    catch { case _: Exception => Nil }
+
+  private def term = consoleReader.getTerminal()
+  def reset() = term.reset()
+  def init()  = term.init()
   
-  val consoleReader = {
-    val r = new jline.ConsoleReader()
-    r setHistory (History().jhistory)
-    r setBellEnabled false 
-    completion foreach { c =>
-      r addCompletor c.jline
-      r setAutoprintThreshhold 250
+  def scalaToJline(tc: ScalaCompleter): Completer = new Completer {
+    def complete(_buf: String, cursor: Int, candidates: JList[CharSequence]): Int = {
+      val buf   = if (_buf == null) "" else _buf      
+      val Candidates(newCursor, newCandidates) = tc.complete(buf, cursor)
+      newCandidates foreach (candidates add _)
+      newCursor
+    }
+  }
+    
+  class JLineConsoleReader extends ConsoleReader with ConsoleReaderHelper {
+    // working around protected/trait/java insufficiencies.
+    def goBack(num: Int): Unit = back(num)
+    def readOneKey(prompt: String) = {
+      this.print(prompt)
+      this.flush()
+      this.readVirtualKey()
+    }
+    def eraseLine() = consoleReader.resetPromptLine("", "", 0)
+    def redrawLineAndFlush(): Unit = { flush() ; drawLine() ; flush() }
+    
+    this setBellEnabled false
+    if (history ne NoHistory)
+      this setHistory history
+    
+    if (completion ne NoCompletion) {
+      val argCompletor: ArgumentCompleter =
+        new ArgumentCompleter(new JLineDelimiter, scalaToJline(completion.completer()))
+      argCompletor setStrict false
+      
+      this addCompleter argCompletor
+      this setAutoprintThreshold 400 // max completion candidates without warning
     }
-
-    r
   }
   
+  val consoleReader: JLineConsoleReader = new JLineConsoleReader()
+
+  def currentLine: String = consoleReader.getCursorBuffer.buffer.toString
+  def redrawLine() = consoleReader.redrawLineAndFlush()
+  def eraseLine() = {
+    while (consoleReader.delete()) { }
+    // consoleReader.eraseLine()
+  }
   def readOneLine(prompt: String) = consoleReader readLine prompt
-  val interactive = true
+  def readOneKey(prompt: String)  = consoleReader readOneKey prompt
 }
 
+object JLineReader {
+  def apply(intp: SparkIMain): JLineReader = apply(new JLineCompletion(intp))
+  def apply(comp: Completion): JLineReader = new JLineReader(comp)
+}
diff --git a/repl/src/main/scala/spark/repl/SparkMemberHandlers.scala b/repl/src/main/scala/spark/repl/SparkMemberHandlers.scala
new file mode 100644
index 0000000000..2980dfcd76
--- /dev/null
+++ b/repl/src/main/scala/spark/repl/SparkMemberHandlers.scala
@@ -0,0 +1,207 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2011 LAMP/EPFL
+ * @author  Martin Odersky
+ */
+
+package spark.repl
+
+import scala.tools.nsc._
+import scala.tools.nsc.interpreter._
+
+import scala.collection.{ mutable, immutable }
+import scala.PartialFunction.cond
+import scala.reflect.NameTransformer
+import util.Chars
+
+trait SparkMemberHandlers {
+  val intp: SparkIMain
+
+  import intp.{ Request, global, naming, atPickler }
+  import global._
+  import naming._
+
+  private def codegenln(leadingPlus: Boolean, xs: String*): String = codegen(leadingPlus, (xs ++ Array("\n")): _*)
+  private def codegenln(xs: String*): String = codegenln(true, xs: _*)
+
+  private def codegen(xs: String*): String = codegen(true, xs: _*)
+  private def codegen(leadingPlus: Boolean, xs: String*): String = {
+    val front = if (leadingPlus) "+ " else ""
+    front + (xs map string2codeQuoted mkString " + ")
+  }
+  private implicit def name2string(name: Name) = name.toString
+  
+  /** A traverser that finds all mentioned identifiers, i.e. things
+   *  that need to be imported.  It might return extra names.
+   */
+  private class ImportVarsTraverser extends Traverser {
+    val importVars = new mutable.HashSet[Name]()
+
+    override def traverse(ast: Tree) = ast match {
+      case Ident(name) =>
+        // XXX this is obviously inadequate but it's going to require some effort
+        // to get right.
+        if (name.toString startsWith "x$") ()
+        else importVars += name
+      case _        => super.traverse(ast)
+    }
+  }
+  private object ImportVarsTraverser {
+    def apply(member: Tree) = {
+      val ivt = new ImportVarsTraverser()
+      ivt traverse member
+      ivt.importVars.toList
+    }
+  }
+
+  def chooseHandler(member: Tree): MemberHandler = member match {
+    case member: DefDef               => new DefHandler(member)
+    case member: ValDef               => new ValHandler(member)
+    case member@Assign(Ident(_), _)   => new AssignHandler(member)
+    case member: ModuleDef            => new ModuleHandler(member)
+    case member: ClassDef             => new ClassHandler(member)
+    case member: TypeDef              => new TypeAliasHandler(member)
+    case member: Import               => new ImportHandler(member)
+    case DocDef(_, documented)        => chooseHandler(documented)
+    case member                       => new GenericHandler(member)
+  }
+  
+  sealed abstract class MemberDefHandler(override val member: MemberDef) extends MemberHandler(member) {
+    def name: Name      = member.name
+    def mods: Modifiers = member.mods
+    def keyword         = member.keyword
+    def prettyName      = NameTransformer.decode(name)
+    
+    override def definesImplicit = member.mods.isImplicit
+    override def definesTerm: Option[TermName] = Some(name.toTermName) filter (_ => name.isTermName)
+    override def definesType: Option[TypeName] = Some(name.toTypeName) filter (_ => name.isTypeName)
+  }
+
+  /** Class to handle one member among all the members included
+   *  in a single interpreter request.
+   */
+  sealed abstract class MemberHandler(val member: Tree) {
+    def definesImplicit = false
+    def definesValue    = false
+    def isLegalTopLevel = member match {
+      case _: ModuleDef | _: ClassDef | _: Import => true
+      case _                                      => false
+    }
+    
+    def definesTerm     = Option.empty[TermName]
+    def definesType     = Option.empty[TypeName]
+
+    lazy val referencedNames = ImportVarsTraverser(member)
+    def importedNames        = List[Name]()
+    def definedNames         = definesTerm.toList ++ definesType.toList
+    def definedOrImported    = definedNames ++ importedNames
+
+    def extraCodeToEvaluate(req: Request): String = ""
+    def resultExtractionCode(req: Request): String = ""
+
+    private def shortName = this.getClass.toString split '.' last
+    override def toString = shortName + referencedNames.mkString(" (refs: ", ", ", ")")
+  }
+
+  class GenericHandler(member: Tree) extends MemberHandler(member)
+  
+  class ValHandler(member: ValDef) extends MemberDefHandler(member) {
+    val maxStringElements = 1000  // no need to mkString billions of elements    
+    override def definesValue = true
+    
+    override def resultExtractionCode(req: Request): String = {
+      val isInternal = isUserVarName(name) && req.lookupTypeOf(name) == "Unit"
+      if (!mods.isPublic || isInternal) ""
+      else {
+        // if this is a lazy val we avoid evaluating it here
+        val resultString =
+          if (mods.isLazy) codegenln(false, "<lazy>")
+          else any2stringOf(req fullPath name, maxStringElements)
+      
+        """ + "%s: %s = " + %s""".format(prettyName, string2code(req typeOf name), resultString)
+      }
+    }
+  }
+
+  class DefHandler(member: DefDef) extends MemberDefHandler(member) {
+    private def vparamss = member.vparamss
+    // true if 0-arity
+    override def definesValue = vparamss.isEmpty || vparamss.head.isEmpty
+    override def resultExtractionCode(req: Request) =
+      if (mods.isPublic) codegenln(name, ": ", req.typeOf(name)) else ""
+  }
+
+  class AssignHandler(member: Assign) extends MemberHandler(member) {
+    val lhs = member.lhs.asInstanceOf[Ident] // an unfortunate limitation
+    val name = newTermName(freshInternalVarName())
+
+    override def definesTerm = Some(name)
+    override def definesValue = true
+    override def extraCodeToEvaluate(req: Request) =
+      """val %s = %s""".format(name, lhs)
+
+    /** Print out lhs instead of the generated varName */
+    override def resultExtractionCode(req: Request) = {
+      val lhsType = string2code(req lookupTypeOf name)
+      val res = string2code(req fullPath name)
+      
+      """ + "%s: %s = " + %s + "\n" """.format(lhs, lhsType, res) + "\n"
+    }
+  }
+
+  class ModuleHandler(module: ModuleDef) extends MemberDefHandler(module) {
+    override def definesTerm = Some(name)
+    override def definesValue = true
+
+    override def resultExtractionCode(req: Request) = codegenln("defined module ", name)
+  }
+
+  class ClassHandler(member: ClassDef) extends MemberDefHandler(member) {
+    override def definesType = Some(name.toTypeName)
+    override def definesTerm = Some(name.toTermName) filter (_ => mods.isCase)
+    
+    override def resultExtractionCode(req: Request) =
+      codegenln("defined %s %s".format(keyword, name))
+  }
+
+  class TypeAliasHandler(member: TypeDef) extends MemberDefHandler(member) {
+    private def isAlias = mods.isPublic && treeInfo.isAliasTypeDef(member)
+    override def definesType = Some(name.toTypeName) filter (_ => isAlias)
+
+    override def resultExtractionCode(req: Request) =
+      codegenln("defined type alias ", name) + "\n"
+  }
+
+  class ImportHandler(imp: Import) extends MemberHandler(imp) {
+    val Import(expr, selectors) = imp
+    def targetType = intp.typeOfExpression("" + expr)
+    
+    // wildcard imports, e.g. import foo._
+    private def selectorWild    = selectors filter (_.name == nme.USCOREkw)
+    // renamed imports, e.g. import foo.{ bar => baz }
+    private def selectorRenames = selectors map (_.rename) filterNot (_ == null)
+    
+    /** Whether this import includes a wildcard import */
+    val importsWildcard = selectorWild.nonEmpty
+    
+    def implicitSymbols = importedSymbols filter (_.isImplicit)
+    def importedSymbols = individualSymbols ++ wildcardSymbols
+    
+    lazy val individualSymbols: List[Symbol] =
+      atPickler(targetType.toList flatMap (tp => individualNames map (tp nonPrivateMember _)))
+
+    lazy val wildcardSymbols: List[Symbol] =
+      if (importsWildcard) atPickler(targetType.toList flatMap (_.nonPrivateMembers))
+      else Nil
+    
+    /** Complete list of names imported by a wildcard */
+    lazy val wildcardNames: List[Name]   = wildcardSymbols map (_.name)
+    lazy val individualNames: List[Name] = selectorRenames filterNot (_ == nme.USCOREkw) flatMap (_.bothNames)
+
+    /** The names imported by this statement */
+    override lazy val importedNames: List[Name] = wildcardNames ++ individualNames
+    lazy val importsSymbolNamed: Set[String] = importedNames map (_.toString) toSet
+    
+    def importString = imp.toString
+    override def resultExtractionCode(req: Request) = codegenln(importString) + "\n"
+  }
+}
diff --git a/repl/src/main/scala/spark/repl/SparkSimpleReader.scala b/repl/src/main/scala/spark/repl/SparkSimpleReader.scala
deleted file mode 100644
index 2b24c4bf63..0000000000
--- a/repl/src/main/scala/spark/repl/SparkSimpleReader.scala
+++ /dev/null
@@ -1,33 +0,0 @@
-/* NSC -- new Scala compiler
- * Copyright 2005-2010 LAMP/EPFL
- * @author Stepan Koltsov
- */
-
-package spark.repl
-
-import scala.tools.nsc
-import scala.tools.nsc._
-import scala.tools.nsc.interpreter
-import scala.tools.nsc.interpreter._
-
-import java.io.{ BufferedReader, PrintWriter }
-import io.{ Path, File, Directory }
-
-/** Reads using standard JDK API */
-class SparkSimpleReader(
-  in: BufferedReader, 
-  out: PrintWriter, 
-  val interactive: Boolean)
-extends SparkInteractiveReader {
-  def this() = this(Console.in, new PrintWriter(Console.out), true)
-  def this(in: File, out: PrintWriter, interactive: Boolean) = this(in.bufferedReader(), out, interactive)
-
-  def close() = in.close()
-  def readOneLine(prompt: String): String = {
-    if (interactive) {
-      out.print(prompt)
-      out.flush()
-    }
-    in.readLine()
-  }
-}
diff --git a/repl/src/test/scala/spark/repl/ReplSuite.scala b/repl/src/test/scala/spark/repl/ReplSuite.scala
index 829b1d934e..a9b1bee7e0 100644
--- a/repl/src/test/scala/spark/repl/ReplSuite.scala
+++ b/repl/src/test/scala/spark/repl/ReplSuite.scala
@@ -22,7 +22,7 @@ class ReplSuite extends FunSuite {
         }
       }
     }
-    val interp = new SparkInterpreterLoop(in, new PrintWriter(out), master)
+    val interp = new SparkILoop(in, new PrintWriter(out), master)
     spark.repl.Main.interp = interp
     val separator = System.getProperty("path.separator")
     interp.main(Array("-classpath", paths.mkString(separator)))
-- 
GitLab