# File lib/ruote/exp/flowexpression.rb, line 435
    def launch_sub (pos, subtree, opts={})

      i = h.fei.dup
      i['sub_wfid'] = get_next_sub_wfid
      i['expid'] = pos

      #p '=== launch_sub ==='
      #p [ :launcher, h.fei['expid'], h.fei['sub_wfid'], h.fei['wfid'] ]
      #p [ :launched, i['expid'], i['sub_wfid'], i['wfid'] ]

      forget = opts[:forget]

      register_child(i) unless forget

      variables = (
        forget ? compile_variables : {}
      ).merge!(opts[:variables] || {})

      @context.storage.put_msg(
        'launch',
        'fei' => i,
        'parent_id' => forget ? nil : h.fei,
        'tree' => subtree,
        'workitem' => opts[:workitem] || h.applied_workitem,
        'variables' => variables,
        'forgotten' => forget)
    end