***** nothing

  Vacucous.  Can be removed?

***** pause

  Fundamental

***** halt

  Fundamental?  Need to indicate termination

***** emit

  Eventually becomes a variable assignment

***** sustain

  loop emit ...; pause end

***** assignment 

  Fundamental

***** procedureCall 

  Fundamental

***** present

  Dismantle into a series of tests and branches

***** ifstatement 

  Dismantle into a series of tests and branches

***** loop

  Dismantle into a goto

  loop ... each ... -> loop abort when ... ; halt when ... end

***** repeat

  Dismantle into tests and a branch.  Need a new variable for the count

***** abort

  Strong abort: place tests before resume
  Weak abort: place tests after pause: like a trap

***** await

Restart:
  pause;
  if !condition goto Restart
  
***** every

  await ...;
  loop ... every ...

***** suspend 

  pause unless condition is true

  conditional before resuming (parallel) body
  
***** trap 

  Ensure outer trap takes priority.

  How does this work when handlers have trap expressions to contend with?
  Do exit levels work this way?

  The IC has a present statement that tests the different trap handlers.

  Exit levels handle which "trap" statement terminates.  Exit levels appear
  to be assigned on a per-trap-statement basis, so that two traps in the same
  statement get the same level.
  
  Handlers are tested after the fact and are not interchangeable with
  exit levels.

  "If several traps are simultaneously exited, then the corresponding
  handlers are executed in parallel."

***** exit

  Signal a trap and terminate

***** exec

  Won't support

***** localvariableDecl

   Initialize local variables

***** localSignalDecl 

   Initialize local signals to unknown

***** do watching

   Dismantle into an abort

***** do upto

   Dismantle into an abort with a halt
