you cannot use "---" and "#" in the same name declaration. it will just fail, so that the reason your multiple devices in a set are not working is that the objects are globally scoped in the set and interfering with eachother, same as if you named them all "foo".
"#" must come at the beginning of a name, so must "---".
"#" is for scope within an abstraction. in the top level it does nothing.
"---" is for scope throughout the entire M4L device no matter how deep (and does nothing in Max alone).
you need to go look at the manual or so.