### Question:
ViManager implements ViNodeSet { public ViNode nodes(String... patterns) { ensureAlive(); Set<ViNode> nodes = new LinkedHashSet<ViNode>(); for(String pattern: patterns) { nodes.add(node(pattern)); } return ViGroup.group(nodes); } ViManager(ViNodeProvider provider);  ViManager(ViNodeProvider provider, int deferedTaskLimit); ViNodeProvider getProvider(); @Override synchronized ViNode node(String namePattern); ViNode nodes(String... patterns); @Override synchronized Collection<ViNode> listNodes(String namePattern); @Override void shutdown(); synchronized void resetDeadNode();  }### Answer:
@Test public void select_multiple() { man.nodes("aa", "ab", "bb", "cc"); Assert.assertEquals(2, man.nodes("aa", "*a").massExec(new Echo()).size()); Assert.assertEquals(3, man.nodes("aa", "a*").massExec(new Echo()).size()); Assert.assertEquals(3, man.nodes("a*", "b*").massExec(new Echo()).size()); Assert.assertEquals(4, man.nodes("a*", "*b").massExec(new Echo()).size()); }