<?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.

-->
<features name="test" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0">

    <feature name="f1">
        <bundle>a</bundle>
        <conditional>
            <condition>f2</condition>
            <condition>f3</condition>
            <bundle>b</bundle>
        </conditional>
        <conditional>
            <condition>f2</condition>
            <condition>f4</condition>
            <bundle>c</bundle>
        </conditional>
    </feature>

    <feature name="f2">
        <feature dependency="true">f4</feature>
        <requirement>xns</requirement>
    </feature>
    <feature name="f3">
        <capability>xns; xns:=f3</capability>
    </feature>
    <feature name="f4">
        <capability>xns; xns:=f4</capability>
        <bundle>d</bundle>
    </feature>

</features>
