/**
  * Basic constructor that creates a function description object from a DataObject. The dataObject
  * is expected to have a <FUNCTION> tag as the top level.
  *
  * @param data DataObject containing function description info
  */
 public FunctionDescription(DataObject data) {
   DataObject nameObj = data.getDataObject(FUNCTION_NAME);
   name = nameObj.getValue();
   DataObject descriptionObj = data.getDataObject(FUNCTION_DESCRIPTION);
   description = descriptionObj.getValue();
   attributes = Attributes.fromDataObject(data.getDataObject(Attributes.ATTRIBUTES));
   DataObject timingObj = data.getDataObject(FUNCTION_SYNCHRONICITY);
   synchronicity = timingObj.getValue();
 }
 /**
  * Constructor that takes a DataObject holding the callback info. The expected tag of the
  * DataObject is <CALLBACK>
  *
  * @param data DataObject containing the callback info
  */
 public Callback(DataObject data) {
   DataObject nameObj = data.getDataObject(CALLBACK_NAME);
   this.name = nameObj.getValue();
   this.attributes = Attributes.fromDataObject(data);
 }