<tag>${inject}</tag>
	.source ?
	.sink ?
	.then || .subscribe ?
		.value ? (BehaviorSubjectSink)
			current value now
			, subscribe for further updates
		=> new SubtreeSink()

	fn() ? StringTagSink
	obj => {} ? JSONSink
	array => [] ? ArrayJoinSink
	scalar => ? .

<tag onxxx="${inject}">...</tag>
	.source ?
	EventSource

<tag attr="xxx ${inject}">...</tag>
	AttributeSink(attr)

<tag class="class1 ${inject}">...</tag>
	ClassSink()
		/str/ ? set : /!str/ ? clear
		{key: <bool>} ? => ClassMapSink

<tag style="xxx; ${inject}">...</tag>
	StyleSink()
		/key: value/ ? set
		{key: <bool>} ? => StyleMapSink

<tag data-key="${inject}">...</tag>
	DatasetSink(key)

<tag ${inject}">...</tag>
<tag ...${inject}">...</tag>
	MergeSink
		.source???? Source()
		.sink? Sink()
		.then || .subscribe ?
			=> DeferredMergeSink()
				{key: <value | undefined>}
			=> DeferredMergeSink()
				{key: <value | undefined>}
		obj => MergeSink
			{class: {}} ? ClassSink
			{class: <observable>} ? (Deferred)ClassSink
			{style: {}} ? StyleSink
			{style: <observable>} ? (Deferred)StyleSink

			{key: <observable>} ?
		array => [] ? ArrayJoinSink
		scalar => ? .

