<?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.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<node>
    <name>hello</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>org.apache.sling.scripting.examplebundle.precompiled.extend1.hello</value>
        <type>String</type>
    </property>
</node>
<node>
<name>hello-v0_9</name>
<primaryNodeType>nt:unstructured</primaryNodeType>
<property>
    <name>sling:resourceType</name>
    <value>org.apache.sling.scripting.examplebundle.precompiled.extend1.hello/0.9.0</value>
    <type>String</type>
</property>
</node>
<node>
    <name>sling-11508-level-2</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>level-2/components/page</value>
        <type>String</type>
    </property>
</node>
<node>
    <name>sling-11508-level-3</name>
    <primaryNodeType>nt:unstructured</primaryNodeType>
    <property>
        <name>sling:resourceType</name>
        <value>level-3/components/page</value>
        <type>String</type>
    </property>
</node>
