public Field convert(
     GroupValue fieldDef, TemplateRegistry templateRegistry, ConversionContext context) {
   String name = fieldDef.getString("Name");
   String namespace = "";
   if (fieldDef.isDefined("Ns")) namespace = fieldDef.getString("Ns");
   Field[] fields = parseFieldInstructions(fieldDef, templateRegistry, context);
   boolean optional = fieldDef.getBool("Optional");
   Group group = new Group(new QName(name, namespace), fields, optional);
   if (fieldDef.isDefined("TypeRef")) {
     GroupValue typeRef = fieldDef.getGroup("TypeRef");
     String typeRefName = typeRef.getString("Name");
     String typeRefNs = ""; // context.getNamespace();
     if (typeRef.isDefined("Ns")) typeRefNs = typeRef.getString("Ns");
     group.setTypeReference(new QName(typeRefName, typeRefNs));
   }
   if (fieldDef.isDefined("AuxId")) {
     group.setId(fieldDef.getString("AuxId"));
   }
   return group;
 }