* check precondition on constructor.  * fix Back to return item_.back   * make terminal type safe