<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->

<!--
Author:  Maxim V. Berkultsev
-->
<java version="${version}" class="java.beans.XMLDecoder">
 <object id="SampleBean0" class="${classname}">
  <void property="object">
   <object id="SampleBean1" class="${classname}">
    <void property="object">
     <object id="SampleBean2" class="${classname}">
      <void property="object">
       <object idref="SampleBean0"/>
      </void>
      <void property="otherText">
       <string>Constructor with args</string>
      </void>
      <void property="text">
       <string>Hello3</string>
      </void>
     </object>
    </void>
    <void property="otherText">
     <string>Constructor with args</string>
    </void>
    <void property="text">
     <string>Hello2</string>
    </void>
   </object>
  </void>
  <void property="objects">
   <array class="java.lang.Object" length="3">
    <void index="1">
     <object class="java.lang.Object"/>
    </void>
   </array>
  </void>
  <void property="smth">
   <array class="double" length="3">
    <void index="2">
     <double>1.0</double>
    </void>
   </array>
  </void>
 </object>
 <object idref="SampleBean1"/>
 <object idref="SampleBean2"/>
</java>
