<?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="checkedSet"> 
    <object class="java.util.HashSet"> 
     <void method="add"> 
      <string>A</string> 
     </void> 
     <void method="add"> 
      <string>B</string> 
     </void> 
     <void method="add"> 
      <string>C</string> 
     </void> 
    </object> 
    <class>java.lang.String</class> 
   </object> 
  </void> 
 </object> 
</java> 

