         warn "an error occurred"
         throw error
       send stamp event
-      send [ '.', 'MKTS/TABLE/description', description, ( copy meta ), ]
+      send [ '.', 'MKTS/TABLE/layout', layout, ( copy meta ), ]
     #.......................................................................................................
     else
       send event

  ### ... more typesetting detail attached here ... ###
  #.........................................................................................................
  f = ->
    @debug                = ( raw_parts ) -> MKTS_TABLE.debug                 me, raw_parts.join ''
    @grid                 = ( raw_parts ) -> MKTS_TABLE.grid                  me, raw_parts.join ''
    @paddingwidth         = ( raw_parts ) -> MKTS_TABLE.paddingwidth          me, raw_parts.join ''

    return null

#-----------------------------------------------------------------------------------------------------------
@$store_layout_event = ( S, L ) ->
  #.........................................................................................................
  return $ ( event, send ) =>
    if select event, '.', 'MKTS/TABLE/layout'
      @store_layout_event S, L, event
      send stamp event
      debug '37724', "table layout names: #{rpr Object.keys L.layout_events}"
      return null
    else
      send event
    return null

#-----------------------------------------------------------------------------------------------------------
@$handle_content_events = ( S, L ) ->
  return $ ( event, send ) =>
    #.......................................................................................................
    ### When table contents start, we register that and do not send anything: ###
    if select event, '(', 'mkts-table-content'
      [ _, _, Q, _, ]       = event
      ### OBS attribute is named 'layout' but contains layout name ###
      unless Q.layout?
        throw new Error "#{badge}#µ1180 missing required attribute `layout` for <mkts-table-content>"
      @push_layout_name S, L, Q.layout
      # debug '44942-1', '------------->', jr event
      send stamp event
    #.......................................................................................................
    ### When table contents end, we send all the sub-events needed to draw the table, and then the
    description-end and description events: ###
    else if select event, ')', 'mkts-table-content'
      #.....................................................................................................
      layout_name                   = @get_current_layout_name          S, L
      layout                        = @layout_from_name                 S, L, layout_name
      selectors_and_content_events  = @get_selectors_and_content_events S, L, layout_name
      @pop_layout_name S, L
      # urge '33444', jr selectors_and_content_events
      for sub_event from MKTS_TABLE._walk_events layout, selectors_and_content_events
        # debug '44942-2', '------------->', jr sub_event
        send sub_event
      # catch error
      #   ### TAINT ###
      #   alert '55443', error.message
      #.....................................................................................................
      # debug '44942-3', '------------->', jr event
      send stamp event
    #.......................................................................................................
    else
      # debug '44942-4', '------------->', jr event
      send event
    return null

#-----------------------------------------------------------------------------------------------------------
@$handle_fields = ( S, L ) ->
  content_buffer  = null
  within_field    = false
  return $ ( event, send ) =>
    return send event unless @is_within_table S, L
    # debug '43474', ( CND.truth @is_within_table S, L ), jr event
    #.......................................................................................................
    ### If we are within table contents, we collect all field events and their contents as table field
    contents; outside that, whitespace events are ignored, and other material generates errors: ###
    #.....................................................................................................
    if select event, '(', 'field'
      within_field = true
      [ type, name, Q, meta, ]  = event
      if not Q? and Q.key?
        throw new Error "need key for field"
      layout_name     = @get_current_layout_name S, L
      content_buffer  = @content_buffer_from_layout_name_and_selector S, L, layout_name, Q.key
      return send stamp event
    #.....................................................................................................
    if select event, ')', 'field'
      within_field   = false
      content_buffer = null
      return send stamp event
    #.....................................................................................................
    if within_field
      content_buffer.push event
      # urge '77782', jr content_buffer
      # urge '27762', jr event
      return null
    #.....................................................................................................
    if ( select event, '.', 'text' ) and ( event[ 2 ].match /^\s*$/ )?
      # whisper '27762', jr event
      return null
    #.....................................................................................................
    ### TAINT should be a fail, not an exception: ###
    # throw new Error "detected illegal content: #{rpr event}"
    warn '27762', jr event
    # return null
    #.......................................................................................................
    send event
    return null

#-----------------------------------------------------------------------------------------------------------
@get_mkts_table_description_and_sandbox = ( S, event ) ->
