public EarleValue? Invoke(EarleCompletionHandler completionHandler, EarleValue target, params EarleValue[] args) { var thread = new EarleThread(completionHandler); var rootFrame = new EarleStackFrame(File.Runtime, null, null, EarleStackFrame.RootFrameIP, null, thread); var frame = CreateFrameExecutor(rootFrame, EarleStackFrame.RootCallIP, target, args?.ToArray() ?? new EarleValue[0]); thread.AttachExecutor(frame); return thread.Run(); }