Filter literature my multiple tags and descendants

I organise my literature with multiple tags. See example below for two Domain tags with partial descendants.

Then I developed tiddler with tag Doc and multiple Domain tags

Now I want to develop a view template for tiddler tagged Doc to list all literature with both tags Crop Model (or descendants) and Machine Learning (or descendants).

Now I create testing codes for tiddler Crop Model - Machine Learning with tags Crop Model and Machine Learning with great filter taggingtree and prefix :map.

<$vars fsearchstart="search:tags:regexp[^(" fsearchend =")$]" fstart="[" fend="]">
<$list filter= "[[Crop Model - Machine Learning]tags[]remove[Doc]remove[Active]] :map:flat[taggingtree[]tag[Domain]join[|]addprefix<fsearchstart>addsuffix<fsearchend>] +[join[]addprefix<fstart>addsuffix<fend>]"
    variable="domainfilter">
<$text text=<<domainfilter>>/>
        <$list filter="[tag[bibtex-entry]filter<domainfilter>count[]]">
               <$link>
                   <$text text=<<currentTiddler>>/>
               </$link>
        </$list>
</$list>
</$vars>

The codes can list all literature (tag with bibtex-entry) for all descendants of Crop Model and Machine Learning except their self.

Now I want to add their self in the list. So I test filter operater append, insertafter. But they are not working for me.

[[Crop Model - Machine Learning]tags[]remove[Doc]remove[Active]] :map:flat[taggingtree[]tag[Domain]append<currentTiddler>join[|]addprefix<fsearchstart>addsuffix<fsearchend>] +[join[]addprefix<fstart>addsuffix<fend>]

[[Crop Model - Machine Learning]tags[]remove[Doc]remove[Active]] :map:flat[taggingtree[]tag[Domain]insertafter<currentTiddler>join[|]addprefix<fsearchstart>addsuffix<fsearchend>] +[join[]addprefix<fstart>addsuffix<fend>]

Thanks for any suggestions.

I get a solution for work around, but still don’t understand why insertafter is not working.

<$list filter= "[[Crop Model - Machine Learning]tags[]remove[Doc]remove[Active]] :map[taggingtree[]tag[Domain]else[]join[|]addsuffix[|]addsuffix<currentTiddler>addprefix<fsearchstart>addsuffix<fsearchend>] +[join[]addprefix<fstart>addsuffix<fend>]"
    variable="domainfilter">

Without looking at the whole problem In the past I found I needed to define “|” as a variable to use it in filters;
\define pipe() |

join<pipe>