### Question:
JexlNodeSet implements Set<JexlNode> { @Override public boolean containsAll(Collection<?> collection) { if (collection != null) { for (Object o : collection) { if (!contains(o)) { return false; } } return true; } return false; } JexlNodeSet();  JexlNodeSet(boolean useSourceNodeForKeys); Collection<JexlNode> getNodes(); Set<String> getNodeKeys(); @Override int size(); @Override boolean isEmpty(); @Override boolean contains(Object o); @Override Iterator<JexlNode> iterator(); @Override Object[] toArray(); @Override T[] toArray(T[] ts); @Override boolean add(JexlNode node); @Override boolean remove(Object o); @Override boolean containsAll(Collection<?> collection); @Override boolean addAll(Collection<? extends JexlNode> collection); @Override boolean retainAll(Collection<?> collection); @Override boolean removeAll(Collection<?> collection); @Override void clear(); String buildKey(JexlNode node); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void testContainsAll() { JexlNode node1 = JexlNodeFactory.buildEQNode("FOO", "bar"); JexlNode node2 = JexlNodeFactory.buildEQNode("FOO2", "bar2"); JexlNode node3 = JexlNodeFactory.buildEQNode("FOO3", "bar3"); JexlNodeSet nodeSet = new JexlNodeSet(); nodeSet.add(node1); nodeSet.add(node2); Collection<JexlNode> nodes = Lists.newArrayList(node1, node2); assertTrue(nodeSet.containsAll(nodes)); nodes = Lists.newArrayList(node2, node3); assertFalse(nodeSet.containsAll(nodes)); nodes = Lists.newArrayList(node3); assertFalse(nodeSet.containsAll(nodes)); assertFalse(nodeSet.containsAll(null)); }