### Question:
Embeddable implements ConfigurationNode, XMLSerializable, Serializable { public void addAttribute(EmbeddableAttribute attribute) { if (attribute.getName() == null) { throw new IllegalArgumentException("Attempt to insert unnamed attribute."); } Object existingAttribute = attributes.get(attribute.getName()); if (existingAttribute != null) { if (existingAttribute == attribute) { return; } else { throw new IllegalArgumentException("An attempt to override embeddable attribute '" + attribute.getName() + "'"); } } attributes.put(attribute.getName(), attribute); attribute.setEmbeddable(this); } Embeddable();  Embeddable(String className); T acceptVisitor(ConfigurationNodeVisitor<T> visitor); DataMap getDataMap(); void setDataMap(DataMap dataMap); EmbeddableAttribute getAttributeForDbPath(String dbPath); Map<String, EmbeddableAttribute> getAttributeMap(); Collection<EmbeddableAttribute> getAttributes(); void addAttribute(EmbeddableAttribute attribute); EmbeddableAttribute getAttribute(String name); void removeAttribute(String name); String getClassName(); void setClassName(String className); @Override void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate);  }### Answer:
@Test public void testAddAttribute() { Embeddable e1 = new Embeddable(); EmbeddableAttribute a1 = new EmbeddableAttribute("a1"); EmbeddableAttribute a2 = new EmbeddableAttribute("a2"); assertEquals(0, e1.getAttributeMap().size()); e1.addAttribute(a1); assertEquals(1, e1.getAttributeMap().size()); assertSame(e1, a1.getEmbeddable()); e1.addAttribute(a2); assertEquals(2, e1.getAttributeMap().size()); assertSame(e1, a2.getEmbeddable()); assertTrue(e1.getAttributes().contains(a1)); assertTrue(e1.getAttributes().contains(a2)); }