<!-- 
 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. 
-->
<obr>
  <require extend="false" filter="(service=org.apache.felix.shell.Command)" multiple="true" name="service" optional="true">Import Service org.apache.felix.shell.Command</require>
  <require extend="false" filter="(service=org.ungoverned.osgi.service.shell.Command)" multiple="true" name="service" optional="true">Import Service org.ungoverned.osgi.service.shell.Command</require>
  <capability name="service">
    <p n="service" v="org.apache.felix.shell.Command"/>
  </capability>
  <capability name="service">
    <p n="service" v="org.apache.felix.shell.ShellService"/>
  </capability>
  <capability name="service">
    <p n="service" v="org.ungoverned.osgi.service.shell.ShellService"/>
  </capability>
</obr>
