struct Thing {
  string s;
  long i;
};
interface StringReciever {
  void recieveString(
    in string arg0
  );
  void bounce(
    in long arg0
  );
};
interface TestInterface {
  string getFirstAppInList();
  void getAppNames(
    in ::StringReciever arg0
  );
  typedef sequence<::Thing> sequence_of_Thing;
  ::TestInterface::sequence_of_Thing getThings();
  void callBounce(
    in ::StringReciever arg0,
    in long arg1
  );
};
interface ISourceTextProvider {
  typedef sequence<string> sequence_of_string;
  ::ISourceTextProvider::sequence_of_string getAllPages();
  void refreshAllPages();
  boolean hasPage(
    in string arg0
  );
  boolean loadPage(
    in string arg0
  );
  void refreshPage(
    in string arg0
  );
  string getPageText(
    in string arg0
  );
  long getPageStatus(
    in string arg0
  );
  long getPageAlterCount(
    in string arg0
  );
};
struct IScriptSection {
  long base;
  long extent;
};
typedef sequence<::IScriptSection> sequence_of_IScriptSection;
struct IScript {
  string url;
  string funname;
  long base;
  long extent;
  long jsdscript;
  ::sequence_of_IScriptSection sections;
};
struct IJSPC {
  ::IScript script;
  long offset;
};
struct IJSSourceLocation {
  long line;
  ::IJSPC pc;
};
interface IJSErrorReporter {
  long reportError(
    in string arg0,
    in string arg1,
    in long arg2,
    in string arg3,
    in long arg4
  );
};
interface IScriptHook {
  void justLoadedScript(
    in ::IScript arg0
  );
  void aboutToUnloadScript(
    in ::IScript arg0
  );
};
struct IJSStackFrameInfo {
  ::IJSPC pc;
  long jsdframe;
};
typedef sequence<::IJSStackFrameInfo> sequence_of_IJSStackFrameInfo;
struct IJSThreadState {
  ::sequence_of_IJSStackFrameInfo stack;
  long continueState;
  string returnValue;
  long status;
  long jsdthreadstate;
  long id;
};
interface IJSExecutionHook {
  void aboutToExecute(
    in ::IJSThreadState arg0,
    in ::IJSPC arg1
  );
};
struct IExecResult {
  string result;
  boolean errorOccured;
  string errorMessage;
  string errorFilename;
  long errorLineNumber;
  string errorLineBuffer;
  long errorTokenOffset;
};
interface IDebugController {
  long getMajorVersion();
  long getMinorVersion();
  ::IJSErrorReporter setErrorReporter(
    in ::IJSErrorReporter arg0
  );
  ::IJSErrorReporter getErrorReporter();
  ::IScriptHook setScriptHook(
    in ::IScriptHook arg0
  );
  ::IScriptHook getScriptHook();
  ::IJSPC getClosestPC(
    in ::IScript arg0,
    in long arg1
  );
  ::IJSSourceLocation getSourceLocation(
    in ::IJSPC arg0
  );
  ::IJSExecutionHook setInterruptHook(
    in ::IJSExecutionHook arg0
  );
  ::IJSExecutionHook getInterruptHook();
  ::IJSExecutionHook setDebugBreakHook(
    in ::IJSExecutionHook arg0
  );
  ::IJSExecutionHook getDebugBreakHook();
  ::IJSExecutionHook setInstructionHook(
    in ::IJSExecutionHook arg0,
    in ::IJSPC arg1
  );
  ::IJSExecutionHook getInstructionHook(
    in ::IJSPC arg0
  );
  void setThreadContinueState(
    in long arg0,
    in long arg1
  );
  void setThreadReturnValue(
    in long arg0,
    in string arg1
  );
  void sendInterrupt();
  void sendInterruptStepInto(
    in long arg0
  );
  void sendInterruptStepOver(
    in long arg0
  );
  void sendInterruptStepOut(
    in long arg0
  );
  void reinstateStepper(
    in long arg0
  );
  ::IExecResult executeScriptInStackFrame(
    in long arg0,
    in ::IJSStackFrameInfo arg1,
    in string arg2,
    in string arg3,
    in long arg4
  );
  boolean isRunningHook(
    in long arg0
  );
  boolean isWaitingForResume(
    in long arg0
  );
  void leaveThreadSuspended(
    in long arg0
  );
  void resumeThread(
    in long arg0
  );
  void iterateScripts(
    in ::IScriptHook arg0
  );
};
