private void writeDynamicData(DynamicData data) throws JsonGenerationException, IOException {
   if (data != null) {
     if (data instanceof DynamicObject) {
       DynamicObject obj = (DynamicObject) data;
       if (obj.hasChildren()) {
         writer.writeFieldName(data.getName());
         writer.writeStartObject();
         for (DynamicData child : obj.getChildren()) {
           writeDynamicData(child);
         }
         writer.writeEndObject();
       }
     } else {
       StringBuilder value = new StringBuilder();
       if (data.isHidden()) {
         value.append("hidden->");
       }
       value.append(data.getGuid());
       if (data.isPrimaryKey()) {
         value.append("*");
       }
       writer.writeStringField(data.getName(), value.toString());
     }
   }
 }
 @Override
 public void onDynamicData(Map<String, Object> data) throws OseeCoreException {
   super.onDynamicData(data);
   try {
     if (!wasStarted && first != null) {
       wasStarted = true;
       writer.writeStartObject();
       writer.writeArrayFieldStart(first.getName());
     }
     writer.writeObject(data);
   } catch (IOException ex) {
     throw new OseeCoreException(ex);
   }
 }