<?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.
-->
<java version="${version}" class="java.beans.XMLDecoder"> 
 <object class="${classname}"> 
  <void property="property"> 
   <object class="java.util.Collections" method="synchronizedMap"> 
    <object class="java.util.HashMap"> 
     <void method="put"> 
      <string>A</string> 
      <string>a</string> 
     </void> 
     <void method="put"> 
      <string>B</string> 
      <string>b</string> 
     </void> 
     <void method="put"> 
      <string>C</string> 
      <string>c</string> 
     </void> 
    </object> 
   </object> 
  </void> 
 </object> 
</java> 

