<?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.
   ***************************************************************
   -->
<site>
   <feature url="features/org.apache.uima.runtime_3.4.0.jar" id="org.apache.uima.runtime" version="3.4.0">
      <category name="uima-tooling-and-runtimes"/>
   </feature>
   <feature url="features/org.apache.uima.tools_3.4.0.jar" id="org.apache.uima.tools" version="3.4.0">
      <category name="uima-tooling-and-runtimes"/>
   </feature>
   <category-def name="uima-tooling-and-runtimes" label="Apache UIMA Eclipse tooling and runtime support">
      <description>
         Apache UIMA Eclipse tooling and runtime support
      </description>
   </category-def>
</site>
