<?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>false</primitive>
  <delegateAnalysisEngineSpecifiers>
    <delegateAnalysisEngine key="NoOpAnnotator2">
      <import location="NoOpAnnotator2.xml"/>
    </delegateAnalysisEngine>
    <delegateAnalysisEngine key="TestMultiplier">
      <import location="../multiplier/SimpleCasGenerator.xml"/>
    </delegateAnalysisEngine>
    <delegateAnalysisEngine key="NoOp">
      <import location="NoOpAnnotator.xml"/>
    </delegateAnalysisEngine>
  </delegateAnalysisEngineSpecifiers>
  <analysisEngineMetaData>
    <name>Test Aggregate TAE</name>
    <description>Detects Nothing</description>
    <flowConstraints>
      <fixedFlow>
        <node>TestMultiplier</node>
        <node>NoOp</node>
        <node>NoOpAnnotator2</node>
      </fixedFlow>
    </flowConstraints>
    <capabilities>
      <capability>
        <inputs/>
        <outputs/>
        <languagesSupported>
          <language>en</language>
        </languagesSupported>
      </capability>
    </capabilities>
    <operationalProperties>
      <modifiesCas>true</modifiesCas>
      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
      <outputsNewCASes>true</outputsNewCASes>
    </operationalProperties>
  </analysisEngineMetaData>
</analysisEngineDescription>
