/**
  * @param c
  * @param parent
  */
 private void process(Component c, MessageElement parent) {
   Location loc = c.location();
   Req req = c.req();
   MessageElementData data =
       new MessageElementData(
           loc.uidPath(),
           loc.desc(),
           req.usage().toString(),
           -1,
           null,
           loc.line(),
           loc.column(),
           -1,
           c.position(),
           c.instance(),
           null,
           COMPONENT);
   MessageElement el = new MessageElement(NODE_COMPONENT, data, parent);
   if (c instanceof SimpleComponent) {
     SimpleComponent s = (SimpleComponent) c;
     MessageElementData value =
         new MessageElementData(
             loc.uidPath(),
             loc.desc(),
             req.usage().toString(),
             -1,
             null,
             loc.line(),
             loc.column(),
             -1,
             s.position(),
             c.instance(),
             s.value().raw(),
             COMPONENT);
     new MessageElement("value", value, el);
   } else {
     ComplexComponent cc = (ComplexComponent) c;
     List<SimpleComponent> children = cc.children();
     if (children != null && !children.isEmpty()) {
       Iterator<SimpleComponent> it = children.iterator();
       while (it.hasNext()) {
         process(it.next(), el);
       }
     }
   }
 }
 /**
  * @param s
  * @param parent
  */
 private void process(SimpleComponent s, MessageElement parent) {
   Location loc = s.location();
   Req req = s.req();
   MessageElementData data =
       new MessageElementData(
           loc.uidPath(),
           loc.desc(),
           req.usage().toString(),
           -1,
           null,
           loc.line(),
           loc.column(),
           -1,
           s.position(),
           s.instance(),
           null,
           SUB_COMPONENT);
   MessageElement el = new MessageElement(NODE_SUB_COMPONENT, data, parent);
   MessageElementData value =
       new MessageElementData(
           loc.uidPath(),
           loc.desc(),
           req.usage().toString(),
           -1,
           null,
           loc.line(),
           loc.column(),
           -1,
           s.position(),
           s.instance(),
           s.value().raw(),
           SUB_COMPONENT);
   new MessageElement("value", value, el);
 }