anchor.diff:  
     endmethod.
   
  +  method deep_structures.
  +
  +    data lx type ref to zcx_text2tab_error.
  +    data lt_exp type tt_deep.
  +    data lt_sub type tt_deep_sub.
  +    data l_input type string.
  +    data lt_header_exp type standard table of string.
  +
  +    field-symbols <i> like line of lt_exp.
  +    field-symbols <j> like line of <i>-deep_tab.
  +
  +    " Fill expected data
  +    append initial line to lt_exp assigning <i>.
  +    <i>-field1         = 1.
  +    <i>-field2         = 111.
  +    <i>-deep_struc-id  = 111.
  +    <i>-deep_struc-sub = 'Ones'.
  +    append initial line to <i>-deep_tab assigning <j>.
  +    <j>-id  = 111.
  +    <j>-sub = 'Ones'.
  +    append initial line to <i>-deep_tab assigning <j>.
  +    <j>-id  = 111.
  +    <j>-sub = 'One one one'.
  +
  +    append initial line to lt_exp assigning <i>.
  +    <i>-field1         = 2.
  +    <i>-field2         = 222.
  +    <i>-deep_struc-id  = 222.
  +    <i>-deep_struc-sub = 'Twos'.
  +    append initial line to <i>-deep_tab assigning <j>.
  +    <j>-id  = 222.
  +    <j>-sub = 'Twos'.
  +
  +    append initial line to lt_exp assigning <i>.
  +    <i>-field1         = 3.
  +    <i>-field2         = 333.
  +    append initial line to lt_exp assigning <i>.
  +    <i>-field1         = 4.
  +    <i>-field2         = 444.
  +
  +    " Sub
  +    append initial line to lt_sub assigning <j>.
  +    <j>-id  = 111.
  +    <j>-sub = 'Ones'.
  +    append initial line to lt_sub assigning <j>.
  +    <j>-id  = 111.
  +    <j>-sub = 'One one one'.
  +    append initial line to lt_sub assigning <j>.
  +    <j>-id  = 222.
  +    <j>-sub = 'Twos'.
  +
  +    " Header
  +    append 'FIELD1' to lt_header_exp.
  +    append 'FIELD2' to lt_header_exp.
  +    append 'DEEP_STRUC' to lt_header_exp.
  +    append 'DEEP_TAB' to lt_header_exp.
  +
  +    " Input
  +    l_input = 'FIELD1\tFIELD2\tDEEP_STRUC\tDEEP_TAB\n'
  +            && '1\t111\t@ext[id=@field1]\t@ext[id=@field1]\n'   " Test ref to field in current tab
  +            && '2\t222\t@ext[id=222]\t@ext[id=222]\n'           " Test fixed value
  +            && '3\t333\t@ext[id=@field1]\t@ext[id=@field1]\n'   " Test empty ext source
  +            && '3\t333\t\t\n'.                                  " Test empty ref
  +    replace all occurrences of '\t' in l_input with c_tab.
  +    replace all occurrences of '\n' in l_input with c_lf.
  +
  +    " Run
  +
  +    data lt_act type tt_deep.
  +    data lt_header_act  type standard table of string.
  +
  +    try.
  +      o = zcl_text2tab_parser=>create( lt_exp ).
  +      o->parse(
  +        exporting
  +          i_data        = l_input
  +          "ii_deep_supplier TODO
  +        importing
  +          e_container   = lt_act
  +          e_head_fields = lt_header_act ).
  +      cl_abap_unit_assert=>assert_equals( act = lt_act exp = lt_exp ).
  +      cl_abap_unit_assert=>assert_equals( act = lt_header_act exp = lt_header_exp ).
  +    catch zcx_text2tab_error into lx.
  +      cl_abap_unit_assert=>fail( lx->get_text( ) ).
  +    endtry.
  +
  +  endmethod.
  +
   endclass.
  
positive.code:       end of ty_dummy_with_nonflat.
  
  
  * ================
    private section.
      constants c_tab   like cl_abap_char_utilities=>horizontal_tab value cl_abap_char_utilities=>horizontal_tab.
  
negative.code:     methods parse_typeless for testing.
      methods with_renames for testing.
      methods adopt_renames for testing.
  
      methods deep_structures for testing.
  
  * ==== HELPERS ===
  
  