/** Returns the FunctionSource object for the given script or function. */
 private FunctionSource getFunctionSource(DebuggableScript fnOrScript) {
   FunctionSource fsource = functionSource(fnOrScript);
   if (fsource == null) {
     String url = getNormalizedUrl(fnOrScript);
     SourceInfo si = sourceInfo(url);
     if (si == null) {
       if (!fnOrScript.isGeneratedScript()) {
         // Not eval or Function, try to load it from URL
         String source = loadSource(url);
         if (source != null) {
           DebuggableScript top = fnOrScript;
           for (; ; ) {
             DebuggableScript parent = top.getParent();
             if (parent == null) {
               break;
             }
             top = parent;
           }
           registerTopScript(top, source);
           fsource = functionSource(fnOrScript);
         }
       }
     }
   }
   return fsource;
 }