<?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.
-->
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:vlt="http://www.day.com/jcr/vault/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:mixinTypes="[vlt:FullCoverage]"
    jcr:primaryType="sling:Folder"
    jcr:title="Full coverage parent">
    <parent-1
        jcr:primaryType="sling:Folder"
        jcr:title="Parent 1">
        <child-1-1
            jcr:primaryType="sling:Folder"
            jcr:title="Child 1-1"/>
        <child-1-2
            jcr:primaryType="sling:Folder"
            jcr:title="Child 1-2"/>
    </parent-1>
    <parent-2
        jcr:primaryType="sling:Folder"
        jcr:title="Parent 2">
        <child-2-1
            jcr:primaryType="sling:Folder"
            jcr:title="Child 2-1"/>
        <child-2-2
            jcr:primaryType="sling:Folder"
            jcr:title="Child 2-2"/>
    </parent-2>
</jcr:root>
