message <span class="message">EvalResult</span>
{
  message <span class="message">ObjectValue</span>
  {
    required <span class="number">uint32</span> objectID     = 1; 
    required <span class="bool">bool  </span> isCallable   = 2; 
    <span class="comment">/** 
     * type, function or object
     */</span>
    required <span class="string">string</span> type         = 3; 
    optional <span class="number">uint32</span> prototypeID  = 4; 
    <span class="comment">/** 
     * The class of the object.
     */</span>
    optional <span class="string">string</span> className    = 5; 
    <span class="comment">/** 
     * If the object is a function, this is the name of
     * the variable associated with that function (if any).
     */</span>
    optional <span class="string">string</span> functionName = 6; 
  }
  <span class="comment">/** 
   * If it is "completed" or "unhandled-exception" then `type`, `value` and `objectValue` will be present.
   */</span>
  required <span class="string">string     </span> status      = 1; 
  <span class="comment">/** 
   * One of:
   * - `"number"`
   * - `"boolean"`
   * - `"string"`
   * - `"null"`
   * - `"undefined"`
   * - `"object"`
   */</span>
  required <span class="string">string     </span> type        = 2; 
  <span class="comment">/** 
   * Only present when `type` is `"number"`, `"string"` or `"boolean"`
   */</span>
  optional <span class="string">string     </span> value       = 3; 
  <span class="comment">/** 
   * Only present when `type` is `"object"`
   */</span>
  optional <span class="message">ObjectValue</span> objectValue = 4; 
}
