<?xml version="1.0" ?>
<!--
  ~  Licensed to the Apache Software Foundation (ASF) under one
  ~  or more contributor license agreements.  See the NOTICE file
  ~  distributed with this work for additional information
  ~  regarding copyright ownership.  The ASF licenses this file
  ~  to you under the Apache License, Version 2.0 (the
  ~  "License"); you may not use this file except in compliance
  ~  with the License.  You may obtain a copy of the License at
  ~
  ~       http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing, software
  ~  distributed under the License is distributed on an "AS IS" BASIS,
  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~  See the License for the specific language governing permissions and
  ~  limitations under the License.
  ~
  ~
  -->

<object>
  <field>
    <name>name</name>
    <value>main</value>
  </field>
  <field>
    <name>host</name>
    <value>
      <object>
        <field>
          <name>_type</name>
          <value>org.apache.zest.test.entity.AbstractConfigurationDeserializationTest$Host</value>
        </field>
        <field>
          <name>port</name>
          <value>1234</value>
        </field>
        <field>
          <name>ip</name>
          <value>12.23.34.45</value>
        </field>
      </object>
    </value>
  </field>
  <field>
    <name>identity</name>
    <value>configtest</value>
  </field>
</object>
