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

<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
  <primitive>true</primitive>
  <annotatorImplementationName>org.apache.uima.analysis_engine.impl.TestAnnotator</annotatorImplementationName>
  <analysisEngineMetaData>
    <name>aeDescriptor</name>
    <description></description>
    <version>1.0</version>
    <vendor></vendor>
    <configurationParameters/>
    <configurationParameterSettings/>
    <typeSystemDescription/>
    <typePriorities/>

    <fsIndexes>
		<fsIndexDescription>
		  <label>myAnnotationIndex</label>
		  <typeName>uima.tcas.Annotation</typeName>
		  <kind>sorted</kind>
		  <keys>
			<fsIndexKey>
			  <featureName>end</featureName>
			  <comparator>reverse</comparator>
			</fsIndexKey>
		  </keys>
		</fsIndexDescription>
    </fsIndexes>
    <!-- Invalid declaration of both fsIndexes and fsIndexCollection -->
	<fsIndexCollection>		
	</fsIndexCollection>
    <capabilities>
      <capability>
        <inputs/>
        <outputs/>
        <languagesSupported/>
      </capability>
    </capabilities>
    <operationalProperties>
      <modifiesCas>false</modifiesCas>
      <multipleDeploymentAllowed>false</multipleDeploymentAllowed>
    </operationalProperties>
  </analysisEngineMetaData>
  <resourceManagerConfiguration/>
</analysisEngineDescription>
