public List<Embeddable> getEmbeddedComponents() {
		if (getDocument() == null)
			return null;
		if (getDocument().getLength() <= 0)
			return null;
		List<Embeddable> list = Collections.synchronizedList(new ArrayList<Embeddable>());
		AbstractDocument.BranchElement section = (AbstractDocument.BranchElement) getDocument().getDefaultRootElement();
		Object name = null, attr = null;
		Enumeration enum1 = section.children();
		AbstractDocument.BranchElement paragraph = null;
		Enumeration enum2 = null, enum3 = null;
		AbstractDocument.LeafElement content = null;
		while (enum1.hasMoreElements()) {
			paragraph = (AbstractDocument.BranchElement) enum1.nextElement();
			enum2 = paragraph.children();
			while (enum2.hasMoreElements()) {
				content = (AbstractDocument.LeafElement) enum2.nextElement();
				enum3 = content.getAttributeNames();
				while (enum3.hasMoreElements()) {
					name = enum3.nextElement();
					attr = content.getAttribute(name);
					if (attr instanceof Embeddable) {
						list.add((Embeddable) attr);
					}
				}
			}
		}
		return list;
	}