<?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.
-->
<fsIndexCollection xmlns="http://uima.apache.org/resourceSpecifier">
    <fsIndexes>
        <fsIndexDescription>
            <label>Automatically Scanned Index</label>
            <typeName>org.apache.uima.fit.type.Token</typeName>
            <kind>sorted</kind>
            <keys>
                <fsIndexKey>
                    <featureName>begin</featureName>
                    <comparator>reverse</comparator>
                </fsIndexKey>
                <fsIndexKey>
                    <featureName>end</featureName>
                    <comparator>standard</comparator>
                </fsIndexKey>
            </keys>
        </fsIndexDescription>
    </fsIndexes>
</fsIndexCollection>