init {
	a := "001"
	b := "hello"
	c := {
		"001": "ok",
		"002": "bad"
	}
}

channel add{
	out b(cur: Str, add(next: Str)) = next
}

channel addC {
	out c(cur: Map, addC(id: Str, name: Str)) = insert(cur, id, name) 
}

channel changeC(id: Str) {
	out c.{id}(cur: Str, changeC(next: Str)) = next
}

channel changeTarget {
	out a(cur: Str, changeTarget(next: Str)) = next
}

channel send(id: Str) {
	in b(cur: Str, send(next, target)) = next
	ref a(target, send(next, target))
	out c.{target}(cur: Str, send(next, target)) = next
}
