private static void writeValue(DataOutput out, ConfigValue value, SimpleConfigOrigin baseOrigin)
      throws IOException {
    FieldOut origin = new FieldOut(SerializedField.VALUE_ORIGIN);
    writeOrigin(origin.data, (SimpleConfigOrigin) value.origin(), baseOrigin);
    writeField(out, origin);

    FieldOut data = new FieldOut(SerializedField.VALUE_DATA);
    writeValueData(data.data, value);
    writeField(out, data);

    writeEndMarker(out);
  }