docs: public static Callable getNameFunctionAndThis(String name,
                                                    Context cx,
                                                    Scriptable scope)
      {
          Scriptable parent = scope.getParentScope();
          if (parent == null) {
              Object result = topScopeName(cx, scope, name);
              if (!(result instanceof Callable)) {
                  if (result == Scriptable.NOT_FOUND) {
                      throw notFoundError(scope, name);
                  }
                  throw notFunctionError(result, name);
              }
              // Top scope is not NativeWith or NativeCall => thisObj == scope
              Scriptable thisObj = scope;
              storeScriptable(cx, thisObj);
              return (Callable)result;
          }
  
          // name will call storeScriptable(cx, thisObj);
          return (Callable)nameOrFunction(cx, scope, parent, name, true);
      }