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 }