However, here's a better way yet to do this:
```
    // if repl, translate the name to something replish
    val q = if (!intp.isDefined) p else (
      // only simple names get the scope treatment
      Some(p) filter (_ contains '.')
      // take path as a Name in scope
      orElse (intp flatMap (_ translatePath p) filter loadable)
      // take path as a Name in scope and find its enclosing class
      orElse (intp flatMap (_ translateEnclosingClass p) filter loadable)
      // take path as a synthetic derived from some Name in scope
      orElse desynthesize(p)
      // just try it plain
      getOrElse p
    )
```
I might have borked the logic in here somewhere - it's totally untested - but I think this is a lot more direct.