/**
  * Updates DoubleAnnotation recursively from an XML DOM tree. <b>NOTE:</b> No properties are
  * removed, only added or updated.
  *
  * @param element Root of the XML DOM tree to construct a model object graph from.
  * @param model Handler for the OME model which keeps track of instances and references seen
  *     during object population.
  * @throws EnumerationException If there is an error instantiating an enumeration during model
  *     object creation.
  */
 public void update(Element element, OMEModel model) throws EnumerationException {
   super.update(element, model);
   String tagName = element.getTagName();
   if (!"DoubleAnnotation".equals(tagName)) {
     LOGGER.debug("Expecting node name of DoubleAnnotation got {}", tagName);
   }
   List<Element> Value_nodeList = getChildrenByTagName(element, "Value");
   if (Value_nodeList.size() > 1) {
     // TODO: Should be its own Exception
     throw new RuntimeException(
         String.format("Value node list size %d != 1", Value_nodeList.size()));
   } else if (Value_nodeList.size() != 0) {
     // Element property Value which is not complex (has no
     // sub-elements)
     setValue(Double.valueOf(Value_nodeList.get(0).getTextContent()));
   }
 }