]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3934 Extract sonar-cobertura-plugin into Sonar Java
authorEvgeny Mandrikov <mandrikov@gmail.com>
Tue, 6 Nov 2012 16:46:01 +0000 (17:46 +0100)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 7 Nov 2012 09:45:58 +0000 (10:45 +0100)
22 files changed:
plugins/sonar-cobertura-plugin/infinitest.args [deleted file]
plugins/sonar-cobertura-plugin/pom.xml [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaMavenInitializer.java [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaMavenPluginHandler.java [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaPlugin.java [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSettings.java [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/AbstractCoberturaParser.java [deleted file]
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/CoberturaUtils.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaMavenInitializerTest.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaMavenPluginHandlerTest.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaPluginTest.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSettingsTest.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/api/CoberturaUtilsTest.java [deleted file]
plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/commons-chain-coverage.xml [deleted file]
plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml [deleted file]
plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldInsertCoverageAtFileLevel/coverage.xml [deleted file]
plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldNotCountTwiceAnonymousClasses.xml [deleted file]
pom.xml
sonar-application/pom.xml
sonar-server/pom.xml

diff --git a/plugins/sonar-cobertura-plugin/infinitest.args b/plugins/sonar-cobertura-plugin/infinitest.args
deleted file mode 100644 (file)
index ed9f41d..0000000
+++ /dev/null
@@ -1 +0,0 @@
--Djava.awt.headless=true
\ No newline at end of file
diff --git a/plugins/sonar-cobertura-plugin/pom.xml b/plugins/sonar-cobertura-plugin/pom.xml
deleted file mode 100644 (file)
index 8533e11..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.codehaus.sonar</groupId>
-    <artifactId>sonar</artifactId>
-    <version>3.4-SNAPSHOT</version>
-    <relativePath>../..</relativePath>
-  </parent>
-  <groupId>org.codehaus.sonar.plugins</groupId>
-  <artifactId>sonar-cobertura-plugin</artifactId>
-  <packaging>sonar-plugin</packaging>
-  <name>Sonar :: Plugins :: Cobertura</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.sonar</groupId>
-      <artifactId>sonar-plugin-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.sonar-plugins.java</groupId>
-      <artifactId>sonar-java-plugin</artifactId>
-      <version>${sonarJava.version}</version>
-      <scope>provided</scope>
-    </dependency>
-
-
-    <!-- TODO http://jira.codehaus.org/browse/SONAR-2011
-    We need following dependency, otherwise we will receive compilation error
-    -->
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.codehaus.sonar</groupId>
-      <artifactId>sonar-testing-harness</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.easytesting</groupId>
-      <artifactId>fest-assert</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <testResources>
-      <testResource>
-        <directory>${basedir}/src/main/resources</directory>
-      </testResource>
-      <testResource>
-        <directory>${basedir}/src/test/resources</directory>
-      </testResource>
-    </testResources>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.sonar</groupId>
-        <artifactId>sonar-packaging-maven-plugin</artifactId>
-        <configuration>
-          <pluginKey>cobertura</pluginKey>
-          <pluginName>Cobertura</pluginName>
-          <pluginClass>org.sonar.plugins.cobertura.CoberturaPlugin</pluginClass>
-          <pluginDescription><![CDATA[Get code coverage with <a href="http://cobertura.sourceforge.net/">Cobertura</a>.]]></pluginDescription>
-        </configuration>
-      </plugin>
-      <!-- Running JUnit tests in parallel -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <parallel>classes</parallel>
-          <threadCount>3</threadCount>
-          <perCoreThreadCount>true</perCoreThreadCount>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaMavenInitializer.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaMavenInitializer.java
deleted file mode 100644 (file)
index 54135a9..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.apache.commons.configuration.Configuration;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.CoverageExtension;
-import org.sonar.api.batch.Initializer;
-import org.sonar.api.batch.maven.DependsUponMavenPlugin;
-import org.sonar.api.batch.maven.MavenPlugin;
-import org.sonar.api.batch.maven.MavenPluginHandler;
-import org.sonar.api.resources.Project;
-import org.sonar.plugins.cobertura.api.CoberturaUtils;
-
-/**
- * Provides {@link CoberturaMavenPluginHandler} and configures correct path to report.
- * Enabled only in Maven environment.
- */
-public class CoberturaMavenInitializer extends Initializer implements CoverageExtension, DependsUponMavenPlugin {
-
-  private CoberturaMavenPluginHandler handler;
-  private CoberturaSettings coberturaSettings;
-
-  public CoberturaMavenInitializer(CoberturaMavenPluginHandler handler, CoberturaSettings coberturaSettings) {
-    this.handler = handler;
-    this.coberturaSettings = coberturaSettings;
-  }
-
-  public MavenPluginHandler getMavenPluginHandler(Project project) {
-    return project.getAnalysisType().equals(Project.AnalysisType.DYNAMIC) ? handler : null;
-  }
-
-  @Override
-  public boolean shouldExecuteOnProject(Project project) {
-    return coberturaSettings.isEnabled(project);
-  }
-
-  @Override
-  public void execute(Project project) {
-    Configuration conf = project.getConfiguration();
-    if (!conf.containsKey(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY)) {
-      String report = getReportPathFromPluginConfiguration(project);
-      if (report == null) {
-        report = getDefaultReportPath(project);
-      }
-      conf.setProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY, report);
-    }
-  }
-
-  private static String getDefaultReportPath(Project project) {
-    return project.getFileSystem().getReportOutputDir() + "/cobertura/coverage.xml";
-  }
-
-  private static String getReportPathFromPluginConfiguration(Project project) {
-    MavenPlugin mavenPlugin = MavenPlugin.getPlugin(
-      project.getPom(),
-      CoberturaUtils.COBERTURA_GROUP_ID,
-      CoberturaUtils.COBERTURA_ARTIFACT_ID);
-    if (mavenPlugin != null) {
-      String path = mavenPlugin.getParameter("outputDirectory");
-      if (path != null) {
-        return path + "/coverage.xml";
-      }
-    }
-    return null;
-  }
-
-}
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaMavenPluginHandler.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaMavenPluginHandler.java
deleted file mode 100644 (file)
index 20a2aa9..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.sonar.api.batch.maven.MavenPlugin;
-import org.sonar.api.batch.maven.MavenPluginHandler;
-import org.sonar.api.batch.maven.MavenSurefireUtils;
-import org.sonar.api.resources.Project;
-import org.sonar.plugins.cobertura.api.CoberturaUtils;
-
-public class CoberturaMavenPluginHandler implements MavenPluginHandler {
-
-  private final CoberturaSettings settings;
-
-  public CoberturaMavenPluginHandler(CoberturaSettings settings) {
-    this.settings = settings;
-  }
-
-  public String getGroupId() {
-    return CoberturaUtils.COBERTURA_GROUP_ID;
-  }
-
-  public String getArtifactId() {
-    return CoberturaUtils.COBERTURA_ARTIFACT_ID;
-  }
-
-  public String getVersion() {
-    return "2.5.1";
-  }
-
-  public boolean isFixedVersion() {
-    return false;
-  }
-
-  public String[] getGoals() {
-    return new String[] {"cobertura"};
-  }
-
-  public void configure(Project project, MavenPlugin coberturaPlugin) {
-    configureCobertura(coberturaPlugin);
-    MavenSurefireUtils.configure(project);
-  }
-
-  private void configureCobertura(MavenPlugin coberturaPlugin) {
-    coberturaPlugin.setParameter("formats/format", "xml");
-    coberturaPlugin.setParameter("maxmem", settings.getMaxMemory());
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaPlugin.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaPlugin.java
deleted file mode 100644 (file)
index 8fa103a..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import com.google.common.collect.ImmutableList;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.Properties;
-import org.sonar.api.Property;
-import org.sonar.api.SonarPlugin;
-
-import java.util.List;
-
-@Properties({
-  @Property(
-    key = CoreProperties.COBERTURA_REPORT_PATH_PROPERTY,
-    name = "Report path",
-    description = "Path (absolute or relative) to Cobertura xml report file.",
-    project = true,
-    global = false),
-  @Property(
-    key = CoreProperties.COBERTURA_MAXMEM_PROPERTY,
-    defaultValue = CoreProperties.COBERTURA_MAXMEM_DEFAULT_VALUE,
-    name = "Maxmem",
-    description = "Maximum memory to pass to JVM of Cobertura processes",
-    project = true,
-    global = true)})
-public final class CoberturaPlugin extends SonarPlugin {
-
-  static final String PLUGIN_KEY = "cobertura";
-
-  public List<?> getExtensions() {
-    return ImmutableList.of(
-        CoberturaSettings.class,
-        CoberturaSensor.class,
-        CoberturaMavenPluginHandler.class,
-        CoberturaMavenInitializer.class);
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java
deleted file mode 100644 (file)
index 2293ff8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.slf4j.LoggerFactory;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.CoverageExtension;
-import org.sonar.api.batch.Sensor;
-import org.sonar.api.batch.SensorContext;
-import org.sonar.api.resources.JavaFile;
-import org.sonar.api.resources.Project;
-import org.sonar.api.resources.Resource;
-import org.sonar.plugins.cobertura.api.AbstractCoberturaParser;
-
-import java.io.File;
-
-public class CoberturaSensor implements Sensor, CoverageExtension {
-
-  private CoberturaSettings settings;
-
-  public CoberturaSensor(CoberturaSettings settings) {
-    this.settings = settings;
-  }
-
-  public boolean shouldExecuteOnProject(Project project) {
-    return settings.isEnabled(project);
-  }
-
-  public void analyse(Project project, SensorContext context) {
-    String path = (String) project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY);
-    if (path == null) {
-      // wasn't configured - skip
-      return;
-    }
-    File report = project.getFileSystem().resolvePath(path);
-    if (!report.exists() || !report.isFile()) {
-      LoggerFactory.getLogger(getClass()).warn("Cobertura report not found at {}", report);
-      return;
-    }
-    parseReport(report, context);
-  }
-
-  protected void parseReport(File xmlFile, final SensorContext context) {
-    LoggerFactory.getLogger(CoberturaSensor.class).info("parsing {}", xmlFile);
-    new JavaCoberturaParser().parseReport(xmlFile, context);
-  }
-
-  @Override
-  public String toString() {
-    return getClass().getSimpleName();
-  }
-
-  private static final class JavaCoberturaParser extends AbstractCoberturaParser {
-    @Override
-    protected Resource<?> getResource(String fileName) {
-      return new JavaFile(fileName);
-    }
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSettings.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSettings.java
deleted file mode 100644 (file)
index 441274d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.BatchExtension;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.config.Settings;
-import org.sonar.api.resources.Java;
-import org.sonar.api.resources.Project;
-import org.sonar.plugins.java.api.JavaSettings;
-
-public class CoberturaSettings implements BatchExtension {
-  private Settings settings;
-  private JavaSettings javaSettings;
-
-  public CoberturaSettings(Settings settings, JavaSettings javaSettings) {
-    this.settings = settings;
-    this.javaSettings = javaSettings;
-  }
-
-  public boolean isEnabled(Project project) {
-    return Java.KEY.equals(project.getLanguageKey())
-      && CoberturaPlugin.PLUGIN_KEY.equals(javaSettings.getEnabledCoveragePlugin())
-      && !project.getFileSystem().mainFiles(Java.KEY).isEmpty()
-      && project.getAnalysisType().isDynamic(true);
-  }
-
-  public String getMaxMemory() {
-    // http://jira.codehaus.org/browse/SONAR-2897: there used to be a typo in the parameter name (was "sonar.cobertura.maxmen")
-    return StringUtils.defaultIfEmpty(
-      settings.getString("sonar.cobertura.maxmen"),
-      settings.getString(CoreProperties.COBERTURA_MAXMEM_PROPERTY)
-    );
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/AbstractCoberturaParser.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/AbstractCoberturaParser.java
deleted file mode 100644 (file)
index c2b4534..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura.api;
-
-import com.google.common.collect.Maps;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang.StringUtils;
-import org.codehaus.staxmate.in.SMHierarchicCursor;
-import org.codehaus.staxmate.in.SMInputCursor;
-import org.sonar.api.batch.SensorContext;
-import org.sonar.api.measures.CoverageMeasuresBuilder;
-import org.sonar.api.measures.Measure;
-import org.sonar.api.resources.Resource;
-import org.sonar.api.utils.StaxParser;
-import org.sonar.api.utils.XmlParserException;
-
-import javax.xml.stream.XMLStreamException;
-import java.io.File;
-import java.text.ParseException;
-import java.util.Map;
-
-import static java.util.Locale.ENGLISH;
-import static org.sonar.api.utils.ParsingUtils.parseNumber;
-
-/**
- * @since 2.4
- */
-public abstract class AbstractCoberturaParser {
-
-  public void parseReport(File xmlFile, final SensorContext context) {
-    try {
-      StaxParser parser = new StaxParser(new StaxParser.XmlStreamHandler() {
-
-        public void stream(SMHierarchicCursor rootCursor) throws XMLStreamException {
-          try {
-            rootCursor.advance();
-            collectPackageMeasures(rootCursor.descendantElementCursor("package"), context);
-          } catch (ParseException e) {
-            throw new XMLStreamException(e);
-          }
-        }
-      });
-      parser.parse(xmlFile);
-    } catch (XMLStreamException e) {
-      throw new XmlParserException(e);
-    }
-  }
-
-  private void collectPackageMeasures(SMInputCursor pack, SensorContext context) throws ParseException, XMLStreamException {
-    while (pack.getNext() != null) {
-      Map<String, CoverageMeasuresBuilder> builderByFilename = Maps.newHashMap();
-      collectFileMeasures(pack.descendantElementCursor("class"), builderByFilename);
-      for (Map.Entry<String, CoverageMeasuresBuilder> entry : builderByFilename.entrySet()) {
-        String filename = sanitizeFilename(entry.getKey());
-        Resource file = getResource(filename);
-        if (fileExists(context, file)) {
-          for (Measure measure : entry.getValue().createMeasures()) {
-            context.saveMeasure(file, measure);
-          }
-        }
-      }
-    }
-  }
-
-  private boolean fileExists(SensorContext context, Resource file) {
-    return context.getResource(file) != null;
-  }
-
-  private void collectFileMeasures(SMInputCursor clazz, Map<String, CoverageMeasuresBuilder> builderByFilename) throws ParseException, XMLStreamException {
-    while (clazz.getNext() != null) {
-      String fileName = clazz.getAttrValue("filename");
-      CoverageMeasuresBuilder builder = builderByFilename.get(fileName);
-      if (builder==null) {
-        builder = CoverageMeasuresBuilder.create();
-        builderByFilename.put(fileName, builder);
-      }
-      collectFileData(clazz, builder);
-    }
-  }
-
-  private void collectFileData(SMInputCursor clazz, CoverageMeasuresBuilder builder) throws ParseException, XMLStreamException {
-    SMInputCursor line = clazz.childElementCursor("lines").advance().childElementCursor("line");
-    while (line.getNext() != null) {
-      int lineId = Integer.parseInt(line.getAttrValue("number"));
-      builder.setHits(lineId, (int) parseNumber(line.getAttrValue("hits"), ENGLISH));
-
-      String isBranch = line.getAttrValue("branch");
-      String text = line.getAttrValue("condition-coverage");
-      if (StringUtils.equals(isBranch, "true") && StringUtils.isNotBlank(text)) {
-        String[] conditions = StringUtils.split(StringUtils.substringBetween(text, "(", ")"), "/");
-        builder.setConditions(lineId, Integer.parseInt(conditions[1]), Integer.parseInt(conditions[0]));
-      }
-    }
-  }
-
-  private String sanitizeFilename(String s) {
-    String fileName = FilenameUtils.removeExtension(s);
-    fileName = fileName.replace('/', '.').replace('\\', '.');
-    return fileName;
-  }
-
-  protected abstract Resource getResource(String fileName);
-}
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/CoberturaUtils.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/CoberturaUtils.java
deleted file mode 100644 (file)
index 36540c4..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura.api;
-
-import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.maven.MavenPlugin;
-import org.sonar.api.batch.maven.MavenUtils;
-import org.sonar.api.resources.Project;
-import org.sonar.api.utils.Logs;
-
-import java.io.File;
-
-/**
- * @since 2.4
- */
-public final class CoberturaUtils {
-
-  public static final String COBERTURA_GROUP_ID = MavenUtils.GROUP_ID_CODEHAUS_MOJO;
-  public static final String COBERTURA_ARTIFACT_ID = "cobertura-maven-plugin";
-
-  /**
-   * @deprecated in 2.8, because assumes that Sonar executed from Maven. Not used any more in sonar-cobertura-plugin.
-   *             See http://jira.codehaus.org/browse/SONAR-2321
-   */
-  @Deprecated
-  public static File getReport(Project project) {
-    File report = getReportFromProperty(project);
-    if (report == null) {
-      report = getReportFromPluginConfiguration(project);
-    }
-    if (report == null) {
-      report = getReportFromDefaultPath(project);
-    }
-
-    if (report == null || !report.exists() || !report.isFile()) {
-      Logs.INFO.warn("Cobertura report not found at {}", report);
-      report = null;
-    }
-    return report;
-  }
-
-  private static File getReportFromProperty(Project project) {
-    String path = (String) project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY);
-    if (path != null) {
-      return project.getFileSystem().resolvePath(path);
-    }
-    return null;
-  }
-
-  private static File getReportFromPluginConfiguration(Project project) {
-    MavenPlugin mavenPlugin = MavenPlugin.getPlugin(project.getPom(), COBERTURA_GROUP_ID, COBERTURA_ARTIFACT_ID);
-    if (mavenPlugin != null) {
-      String path = mavenPlugin.getParameter("outputDirectory");
-      if (path != null) {
-        return new File(project.getFileSystem().resolvePath(path), "coverage.xml");
-      }
-    }
-    return null;
-  }
-
-  private static File getReportFromDefaultPath(Project project) {
-    return new File(project.getFileSystem().getReportOutputDir(), "cobertura/coverage.xml");
-  }
-
-  private CoberturaUtils() {
-  }
-
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaMavenInitializerTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaMavenInitializerTest.java
deleted file mode 100644 (file)
index b7788a0..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.maven.project.MavenProject;
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.resources.Project;
-import org.sonar.api.resources.ProjectFileSystem;
-import org.sonar.api.test.MavenTestUtils;
-
-import java.io.File;
-
-import static org.fest.assertions.Assertions.assertThat;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-public class CoberturaMavenInitializerTest {
-
-  private Project project;
-  private CoberturaMavenInitializer initializer;
-  private CoberturaMavenPluginHandler handler;
-  private CoberturaSettings settings;
-
-  @Before
-  public void setUp() {
-    project = mock(Project.class);
-    handler = mock(CoberturaMavenPluginHandler.class);
-    settings = mock(CoberturaSettings.class);
-    initializer = new CoberturaMavenInitializer(handler, settings);
-  }
-
-
-  @Test
-  public void doNotExecuteMavenPluginIfReuseReports() {
-    when(project.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS);
-    assertThat(initializer.getMavenPluginHandler(project)).isNull();
-  }
-
-  @Test
-  public void doNotExecuteMavenPluginIfStaticAnalysis() {
-    when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC);
-    assertThat(initializer.getMavenPluginHandler(project)).isNull();
-  }
-
-  @Test
-  public void executeMavenPluginIfDynamicAnalysis() {
-    when(project.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC);
-    assertThat(initializer.getMavenPluginHandler(project)).isSameAs(handler);
-  }
-
-  @Test
-  public void doNotSetReportPathIfAlreadyConfigured() {
-    Configuration configuration = mock(Configuration.class);
-    when(configuration.containsKey(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY)).thenReturn(true);
-    when(project.getConfiguration()).thenReturn(configuration);
-    initializer.execute(project);
-    verify(configuration, never()).setProperty(eq(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY), anyString());
-  }
-
-  @Test
-  public void shouldSetReportPathFromPom() {
-    Configuration configuration = mock(Configuration.class);
-    when(project.getConfiguration()).thenReturn(configuration);
-    MavenProject pom = MavenTestUtils.loadPom("/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml");
-    when(project.getPom()).thenReturn(pom);
-    initializer.execute(project);
-    verify(configuration).setProperty(eq(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY), eq("overridden/dir/coverage.xml"));
-  }
-
-  @Test
-  public void shouldSetDefaultReportPath() {
-    ProjectFileSystem pfs = mock(ProjectFileSystem.class);
-    when(pfs.getReportOutputDir()).thenReturn(new File("reportOutputDir"));
-    Configuration configuration = mock(Configuration.class);
-    when(project.getConfiguration()).thenReturn(configuration);
-    when(project.getFileSystem()).thenReturn(pfs);
-    initializer.execute(project);
-    verify(configuration).setProperty(eq(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY), eq("reportOutputDir/cobertura/coverage.xml"));
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaMavenPluginHandlerTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaMavenPluginHandlerTest.java
deleted file mode 100644 (file)
index 037bb74..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.apache.maven.project.MavenProject;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.sonar.api.batch.maven.MavenPlugin;
-import org.sonar.api.resources.Project;
-import org.sonar.plugins.cobertura.api.CoberturaUtils;
-
-import static org.fest.assertions.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class CoberturaMavenPluginHandlerTest {
-
-  private CoberturaMavenPluginHandler handler;
-  private CoberturaSettings settings;
-
-  @Before
-  public void before() {
-    settings = mock(CoberturaSettings.class);
-    handler = new CoberturaMavenPluginHandler(settings);
-  }
-
-  @Test
-  public void users_could_change_version() {
-    // first of all, version was fixed : see http://jira.codehaus.org/browse/SONAR-1055
-    // but it's more reasonable to let users change the version : see http://jira.codehaus.org/browse/SONAR-1310
-    assertThat(handler.isFixedVersion()).isFalse();
-  }
-
-  @Test
-  public void test_metadata() {
-    assertThat(handler.getGroupId()).isEqualTo("org.codehaus.mojo");
-    assertThat(handler.getArtifactId()).isEqualTo("cobertura-maven-plugin");
-    assertThat(handler.getVersion()).isEqualTo("2.5.1");
-    assertThat(handler.getGoals()).containsOnly("cobertura");
-  }
-
-  @Test
-  public void should_enable_xml_format() {
-    Project project = mock(Project.class);
-    when(project.getPom()).thenReturn(new MavenProject());
-
-    MavenPlugin coberturaPlugin = new MavenPlugin(CoberturaUtils.COBERTURA_GROUP_ID, CoberturaUtils.COBERTURA_ARTIFACT_ID, null);
-    handler.configure(project, coberturaPlugin);
-
-    assertThat(coberturaPlugin.getParameter("formats/format")).isEqualTo("xml");
-  }
-
-  @Test
-  public void should_set_max_memory() {
-    when(settings.getMaxMemory()).thenReturn("128m");
-    MavenPlugin coberturaPlugin = new MavenPlugin(CoberturaUtils.COBERTURA_GROUP_ID, CoberturaUtils.COBERTURA_ARTIFACT_ID, null);
-
-    Project project = mock(Project.class, Mockito.RETURNS_MOCKS);
-    handler.configure(project, coberturaPlugin);
-
-    assertThat(coberturaPlugin.getParameter("maxmem")).isEqualTo("128m");
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaPluginTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaPluginTest.java
deleted file mode 100644 (file)
index 6d26094..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.junit.Test;
-
-import static org.fest.assertions.Assertions.assertThat;
-
-public class CoberturaPluginTest {
-
-  @Test
-  public void test_getExtensions() {
-    assertThat(new CoberturaPlugin().getExtensions().size()).isGreaterThan(1);
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java
deleted file mode 100644 (file)
index 3262d80..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.SensorContext;
-import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.measures.Measure;
-import org.sonar.api.resources.JavaFile;
-import org.sonar.api.resources.JavaPackage;
-import org.sonar.api.resources.Project;
-import org.sonar.api.resources.ProjectFileSystem;
-import org.sonar.api.resources.Qualifiers;
-import org.sonar.api.resources.Resource;
-import org.sonar.api.resources.Scopes;
-import org.sonar.api.test.IsMeasure;
-import org.sonar.api.test.IsResource;
-
-import java.io.File;
-import java.net.URISyntaxException;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyDouble;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-public class CoberturaSensorTest {
-
-  private SensorContext context;
-  private CoberturaSensor sensor;
-
-  @Before
-  public void setUp() {
-    context = mock(SensorContext.class);
-    CoberturaSettings settings = mock(CoberturaSettings.class);
-    sensor = new CoberturaSensor(settings);
-  }
-
-  @Test
-  public void shouldNotFailIfReportNotSpecifiedOrNotFound() {
-    ProjectFileSystem pfs = mock(ProjectFileSystem.class);
-    when(pfs.resolvePath(anyString()))
-      .thenReturn(new File("notFound.xml"));
-
-    Project project = mock(Project.class);
-    when(project.getFileSystem()).thenReturn(pfs);
-    when(project.getProperty(eq(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY)))
-      .thenReturn("notFound.xml")
-      .thenReturn(null);
-
-    sensor.analyse(project, context);
-    sensor.analyse(project, context);
-  }
-
-  @Test
-  public void doNotCollectProjectCoverage() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    verify(context, never()).saveMeasure(eq(CoreMetrics.COVERAGE), anyDouble());
-  }
-
-  @Test
-  public void doNotCollectProjectLineCoverage() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    verify(context, never()).saveMeasure(eq(CoreMetrics.LINE_COVERAGE), anyDouble());
-    verify(context, never()).saveMeasure(argThat(new IsMeasure(CoreMetrics.COVERAGE_LINE_HITS_DATA)));
-  }
-
-  @Test
-  public void doNotCollectProjectBranchCoverage() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    verify(context, never()).saveMeasure(eq(CoreMetrics.BRANCH_COVERAGE), anyDouble());
-  }
-
-  @Test
-  public void collectPackageLineCoverage() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    verify(context, never()).saveMeasure((Resource) argThat(is(JavaPackage.class)), eq(CoreMetrics.LINE_COVERAGE), anyDouble());
-    verify(context, never()).saveMeasure((Resource) argThat(is(JavaPackage.class)), eq(CoreMetrics.UNCOVERED_LINES), anyDouble());
-  }
-
-  @Test
-  public void collectPackageBranchCoverage() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    verify(context, never()).saveMeasure((Resource) argThat(is(JavaPackage.class)), eq(CoreMetrics.BRANCH_COVERAGE), anyDouble());
-    verify(context, never()).saveMeasure((Resource) argThat(is(JavaPackage.class)), eq(CoreMetrics.UNCOVERED_CONDITIONS), anyDouble());
-  }
-
-  @Test
-  public void packageCoverageIsCalculatedLaterByDecorator() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    verify(context, never()).saveMeasure((Resource) argThat(is(JavaPackage.class)), eq(CoreMetrics.COVERAGE), anyDouble());
-  }
-
-  @Test
-  public void collectFileLineCoverage() throws URISyntaxException {
-    when(context.getResource(any(Resource.class))).thenReturn(new JavaFile("org.sonar.MyClass"));
-    sensor.parseReport(getCoverageReport(), context);
-
-    final JavaFile file = new JavaFile("org.apache.commons.chain.config.ConfigParser");
-    verify(context).saveMeasure(eq(file), argThat(new IsMeasure(CoreMetrics.LINES_TO_COVER, 30.0)));
-    verify(context).saveMeasure(eq(file), argThat(new IsMeasure(CoreMetrics.UNCOVERED_LINES, 5.0)));
-  }
-
-  @Test
-  public void collectFileBranchCoverage() throws URISyntaxException {
-    when(context.getResource(any(Resource.class))).thenReturn(new JavaFile("org.sonar.MyClass"));
-    sensor.parseReport(getCoverageReport(), context);
-
-    final JavaFile file = new JavaFile("org.apache.commons.chain.config.ConfigParser");
-    verify(context).saveMeasure(eq(file), argThat(new IsMeasure(CoreMetrics.CONDITIONS_TO_COVER, 6.0)));
-    verify(context).saveMeasure(eq(file), argThat(new IsMeasure(CoreMetrics.UNCOVERED_CONDITIONS, 2.0)));
-  }
-
-  @Test
-  public void testDoNotSaveMeasureOnResourceWhichDoesntExistInTheContext() throws URISyntaxException {
-    when(context.getResource(any(Resource.class))).thenReturn(null);
-    sensor.parseReport(getCoverageReport(), context);
-    verify(context, never()).saveMeasure(any(Resource.class), any(Measure.class));
-  }
-
-  @Test
-  public void javaInterfaceHasNoCoverage() throws URISyntaxException {
-    sensor.parseReport(getCoverageReport(), context);
-
-    final JavaFile interfaze = new JavaFile("org.apache.commons.chain.Chain");
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.COVERAGE)));
-
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.LINE_COVERAGE)));
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.LINES_TO_COVER)));
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.UNCOVERED_LINES)));
-
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.BRANCH_COVERAGE)));
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.CONDITIONS_TO_COVER)));
-    verify(context, never()).saveMeasure(eq(interfaze), argThat(new IsMeasure(CoreMetrics.UNCOVERED_CONDITIONS)));
-  }
-
-  @Test
-  public void shouldInsertCoverageAtFileLevel() throws URISyntaxException {
-    File coverage = new File(getClass().getResource(
-      "/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldInsertCoverageAtFileLevel/coverage.xml").toURI());
-    when(context.getResource(any(Resource.class))).thenReturn(new JavaFile("org.sonar.MyClass"));
-    sensor.parseReport(coverage, context);
-
-    verify(context).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass")),
-      argThat(new IsMeasure(CoreMetrics.LINES_TO_COVER, 35.0)));
-    verify(context).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass")),
-      argThat(new IsMeasure(CoreMetrics.UNCOVERED_LINES, 22.0)));
-
-    verify(context).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass")),
-      argThat(new IsMeasure(CoreMetrics.CONDITIONS_TO_COVER, 4.0)));
-    verify(context).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass")),
-      argThat(new IsMeasure(CoreMetrics.UNCOVERED_CONDITIONS, 3.0)));
-
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass$InnerClassInside")),
-      argThat(new IsMeasure(CoreMetrics.LINES_TO_COVER)));
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass$InnerClassInside")),
-      argThat(new IsMeasure(CoreMetrics.CONDITIONS_TO_COVER)));
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass$InnerClassInside")),
-      argThat(new IsMeasure(CoreMetrics.UNCOVERED_CONDITIONS)));
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.InnerClass$InnerClassInside")),
-      argThat(new IsMeasure(CoreMetrics.UNCOVERED_LINES)));
-
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.PrivateClass")),
-      argThat(new IsMeasure(CoreMetrics.LINES_TO_COVER)));
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.PrivateClass")),
-      argThat(new IsMeasure(CoreMetrics.CONDITIONS_TO_COVER)));
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.PrivateClass")),
-      argThat(new IsMeasure(CoreMetrics.UNCOVERED_CONDITIONS)));
-    verify(context, never()).saveMeasure(
-      argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.PrivateClass")),
-      argThat(new IsMeasure(CoreMetrics.UNCOVERED_LINES)));
-
-    verify(context)
-      .saveMeasure(
-        eq(new JavaFile("org.sonar.samples.InnerClass")),
-        argThat(new IsMeasure(
-          CoreMetrics.COVERAGE_LINE_HITS_DATA,
-          "22=2;25=0;26=0;29=0;30=0;31=0;34=1;35=1;36=1;37=0;39=1;41=1;44=2;46=1;47=1;50=0;51=0;52=0;53=0;55=0;57=0;60=0;61=0;64=1;71=1;73=1;76=0;77=0;80=0;81=0;85=0;87=0;91=0;93=0;96=1")));
-  }
-
-  @Test
-  public void collectFileLineHitsData() throws URISyntaxException {
-    when(context.getResource(any(Resource.class))).thenReturn(new JavaFile("org.sonar.MyClass"));
-    sensor.parseReport(getCoverageReport(), context);
-    verify(context).saveMeasure(
-      eq(new JavaFile("org.apache.commons.chain.impl.CatalogBase")),
-      argThat(new IsMeasure(CoreMetrics.COVERAGE_LINE_HITS_DATA,
-        "48=117;56=234;66=0;67=0;68=0;84=999;86=999;98=318;111=18;121=0;122=0;125=0;126=0;127=0;128=0;131=0;133=0")));
-  }
-
-  @Test
-  public void shouldNotCountTwiceAnonymousClasses() throws URISyntaxException {
-    File coverage = new File(getClass().getResource("/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldNotCountTwiceAnonymousClasses.xml").toURI());
-    when(context.getResource(any(Resource.class))).thenReturn(new JavaFile("org.sonar.samples.MyClass"));
-    sensor.parseReport(coverage, context);
-
-    verify(context).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.CLASS, "org.sonar.samples.MyFile")),
-      argThat(new IsMeasure(CoreMetrics.LINES_TO_COVER, 5.0))); // do not count line 26 twice
-  }
-
-  private File getCoverageReport() throws URISyntaxException {
-    return new File(getClass().getResource("/org/sonar/plugins/cobertura/CoberturaSensorTest/commons-chain-coverage.xml").toURI());
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSettingsTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSettingsTest.java
deleted file mode 100644 (file)
index c36661b..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.config.Settings;
-import org.sonar.api.resources.InputFile;
-import org.sonar.api.resources.InputFileUtils;
-import org.sonar.api.resources.Java;
-import org.sonar.api.resources.Project;
-import org.sonar.api.resources.ProjectFileSystem;
-import org.sonar.plugins.java.api.JavaSettings;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.fest.assertions.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class CoberturaSettingsTest {
-
-  private Settings settings;
-  private JavaSettings javaSettings;
-  private ProjectFileSystem fileSystem;
-  private Project javaProject;
-  private CoberturaSettings coberturaSettings;
-
-  @Before
-  public void before() {
-    settings = new Settings();
-    javaSettings = mock(JavaSettings.class);
-    when(javaSettings.getEnabledCoveragePlugin()).thenReturn("cobertura");
-    fileSystem = mock(ProjectFileSystem.class);
-    when(fileSystem.mainFiles(Java.KEY)).thenReturn(Arrays.asList(InputFileUtils.create(null, "")));
-    javaProject = mock(Project.class);
-    when(javaProject.getLanguageKey()).thenReturn(Java.KEY);
-    when(javaProject.getFileSystem()).thenReturn(fileSystem);
-    when(javaProject.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC);
-    coberturaSettings = new CoberturaSettings(settings, javaSettings);
-  }
-
-  @Test
-  public void should_be_enabled_if_project_with_java_sources() {
-    assertThat(coberturaSettings.isEnabled(javaProject)).isTrue();
-  }
-
-  @Test
-  public void should_be_disabled_if_not_java() {
-    Project phpProject = mock(Project.class);
-    when(phpProject.getLanguageKey()).thenReturn("php");
-
-    assertThat(coberturaSettings.isEnabled(phpProject)).isFalse();
-  }
-
-  @Test
-  public void should_be_disabled_if_java_project_without_sources() {
-    when(fileSystem.mainFiles(Java.KEY)).thenReturn(Collections.<InputFile>emptyList());
-    assertThat(coberturaSettings.isEnabled(javaProject)).isFalse();
-  }
-
-  @Test
-  public void should_be_disabled_if_static_analysis_only() {
-    when(javaProject.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC);
-    assertThat(coberturaSettings.isEnabled(javaProject)).isFalse();
-  }
-
-  @Test
-  public void should_be_enabled_if_reuse_report_mode() {
-    when(javaProject.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS);
-    assertThat(coberturaSettings.isEnabled(javaProject)).isTrue();
-  }
-
-  @Test
-  public void should_configure_max_memory() {
-    settings.setProperty("sonar.cobertura.maxmem", "128m");
-    assertThat(coberturaSettings.getMaxMemory()).isEqualTo("128m");
-  }
-
-  /**
-   * http://jira.codehaus.org/browse/SONAR-2897: there used to be a typo in the parameter name (was "sonar.cobertura.maxmen")
-   */
-  @Test
-  public void should_support_deprecated_max_memory() {
-    settings.setProperty("sonar.cobertura.maxmen", "128m");
-    assertThat(coberturaSettings.getMaxMemory()).isEqualTo("128m");
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/api/CoberturaUtilsTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/api/CoberturaUtilsTest.java
deleted file mode 100644 (file)
index 6db5871..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Sonar, open source software quality management tool.
- * Copyright (C) 2008-2012 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * Sonar is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * Sonar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Sonar; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
- */
-package org.sonar.plugins.cobertura.api;
-
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import org.apache.maven.project.MavenProject;
-import org.junit.Test;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.resources.ProjectFileSystem;
-import org.sonar.api.resources.Project;
-import org.sonar.api.test.MavenTestUtils;
-
-import java.io.File;
-import java.net.URISyntaxException;
-
-public class CoberturaUtilsTest {
-  @Test
-  public void shouldGetReportPathFromProperty() throws URISyntaxException {
-    ProjectFileSystem fileSystem = mock(ProjectFileSystem.class);
-    when(fileSystem.resolvePath("foo")).thenReturn(getCoverageReport());
-
-    Project project = mock(Project.class);
-    when(project.getFileSystem()).thenReturn(fileSystem);
-    when(project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY)).thenReturn("foo");
-
-    File report = CoberturaUtils.getReport(project);
-    verify(fileSystem).resolvePath("foo");
-    assertNotNull(report);
-  }
-
-  @Test
-  public void shouldGetReportPathFromPom() {
-    MavenProject pom = MavenTestUtils.loadPom("/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml");
-
-    ProjectFileSystem fileSystem = mock(ProjectFileSystem.class);
-
-    Project project = mock(Project.class);
-    when(project.getPom()).thenReturn(pom);
-    when(project.getFileSystem()).thenReturn(fileSystem);
-
-    CoberturaUtils.getReport(project);
-
-    verify(fileSystem).resolvePath("overridden/dir");
-  }
-
-  private File getCoverageReport() throws URISyntaxException {
-    return new File(getClass().getResource("/org/sonar/plugins/cobertura/CoberturaSensorTest/commons-chain-coverage.xml").toURI());
-  }
-}
diff --git a/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/commons-chain-coverage.xml b/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/commons-chain-coverage.xml
deleted file mode 100644 (file)
index adb4f7b..0000000
+++ /dev/null
@@ -1,10201 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
-
-<coverage line-rate="0.6748129675810474" branch-rate="0.5783664459161147" lines-covered="1353" lines-valid="2005"
-          branches-covered="524" branches-valid="906" complexity="2.2051282051282053" version="1.9.2"
-          timestamp="1253257458277">
-  <sources>
-    <source>/Users/simon/projects/commons-chain/src/java</source>
-    <source>--source</source>
-  </sources>
-  <packages>
-    <package name="org.apache.commons.chain" line-rate="0.9024390243902439" branch-rate="0.6818181818181818"
-             complexity="1.6875">
-      <classes>
-        <class name="org.apache.commons.chain.Catalog" filename="org/apache/commons/chain/Catalog.java" line-rate="1.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-          </methods>
-          <lines>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.CatalogFactory" filename="org/apache/commons/chain/CatalogFactory.java"
-               line-rate="0.9024390243902439" branch-rate="0.6818181818181818" complexity="2.2222222222222223">
-          <methods>
-            <method name="&lt;clinit&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="172" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="41" hits="36" branch="false"/>
-              </lines>
-            </method>
-            <method name="class$" signature="(Ljava/lang/String;)Ljava/lang/Class;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="147" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="212" hits="39" branch="false"/>
-                <line number="213" hits="39" branch="false"/>
-                <line number="214" hits="39" branch="false"/>
-                <line number="216" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="getClassLoader" signature="()Ljava/lang/ClassLoader;" line-rate="0.75" branch-rate="0.25">
-              <lines>
-                <line number="229" hits="234" branch="false"/>
-                <line number="230" hits="234" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="231" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="233" hits="234" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommand" signature="(Ljava/lang/String;)Lorg/apache/commons/chain/Command;"
-                    line-rate="0.8571428571428571" branch-rate="0.7142857142857143">
-              <lines>
-                <line number="127" hits="21" branch="false"/>
-                <line number="128" hits="21" branch="false"/>
-                <line number="129" hits="21" branch="false"/>
-                <line number="131" hits="21" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="132" hits="21" branch="false"/>
-                <line number="133" hits="21" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="134" hits="15" branch="false"/>
-                <line number="135" hits="15" branch="false"/>
-                <line number="136" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="137" hits="3" branch="false"/>
-                <line number="144" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="145" hits="12" branch="false"/>
-                <line number="146" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="148" hits="6" branch="false"/>
-                <line number="149" hits="6" branch="false"/>
-                <line number="152" hits="6" branch="false"/>
-                <line number="153" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="155" hits="0" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-                <line number="160" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="getInstance" signature="()Lorg/apache/commons/chain/CatalogFactory;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="190" hits="195" branch="false"/>
-                <line number="191" hits="195" branch="false"/>
-                <line number="192" hits="195" branch="false"/>
-                <line number="193" hits="195" branch="false"/>
-                <line number="194" hits="195" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="195" hits="36" branch="false"/>
-                <line number="196" hits="36" branch="false"/>
-                <line number="198" hits="195" branch="false"/>
-                <line number="199" hits="195" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="41" hits="36" branch="false"/>
-            <line number="127" hits="21" branch="false"/>
-            <line number="128" hits="21" branch="false"/>
-            <line number="129" hits="21" branch="false"/>
-            <line number="131" hits="21" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="132" hits="21" branch="false"/>
-            <line number="133" hits="21" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="134" hits="15" branch="false"/>
-            <line number="135" hits="15" branch="false"/>
-            <line number="136" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="137" hits="3" branch="false"/>
-            <line number="144" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="145" hits="12" branch="false"/>
-            <line number="146" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="147" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="148" hits="6" branch="false"/>
-            <line number="149" hits="6" branch="false"/>
-            <line number="152" hits="6" branch="false"/>
-            <line number="153" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="155" hits="0" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-            <line number="160" hits="12" branch="false"/>
-            <line number="172" hits="3" branch="false"/>
-            <line number="190" hits="195" branch="false"/>
-            <line number="191" hits="195" branch="false"/>
-            <line number="192" hits="195" branch="false"/>
-            <line number="193" hits="195" branch="false"/>
-            <line number="194" hits="195" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="195" hits="36" branch="false"/>
-            <line number="196" hits="36" branch="false"/>
-            <line number="198" hits="195" branch="false"/>
-            <line number="199" hits="195" branch="false"/>
-            <line number="212" hits="39" branch="false"/>
-            <line number="213" hits="39" branch="false"/>
-            <line number="214" hits="39" branch="false"/>
-            <line number="216" hits="39" branch="false"/>
-            <line number="229" hits="234" branch="false"/>
-            <line number="230" hits="234" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="231" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="233" hits="234" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.Chain" filename="org/apache/commons/chain/Chain.java" line-rate="1.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-          </methods>
-          <lines>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.Command" filename="org/apache/commons/chain/Command.java" line-rate="1.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-          </methods>
-          <lines>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.Context" filename="org/apache/commons/chain/Context.java" line-rate="1.0"
-               branch-rate="1.0" complexity="0.0">
-          <methods>
-          </methods>
-          <lines>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.Filter" filename="org/apache/commons/chain/Filter.java" line-rate="1.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-          </methods>
-          <lines>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.config" line-rate="0.8048780487804879" branch-rate="0.7083333333333334"
-             complexity="1.4333333333333333">
-      <classes>
-        <class name="org.apache.commons.chain.config.ConfigCatalogRule"
-               filename="org/apache/commons/chain/config/ConfigCatalogRule.java" line-rate="1.0" branch-rate="1.0"
-               complexity="2.5">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljava/lang/String;Ljava/lang/String;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="53" hits="60" branch="false"/>
-                <line number="54" hits="60" branch="false"/>
-                <line number="55" hits="60" branch="false"/>
-                <line number="56" hits="60" branch="false"/>
-                <line number="66" hits="60" branch="false"/>
-                <line number="73" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="begin" signature="(Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="96" hits="54" branch="false"/>
-                <line number="97" hits="54" branch="false"/>
-                <line number="98" hits="54" branch="false"/>
-                <line number="99" hits="54" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="100" hits="27" branch="false"/>
-                <line number="102" hits="27" branch="false"/>
-                <line number="106" hits="54" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="107" hits="6" branch="false"/>
-                <line number="108" hits="6" branch="false"/>
-                <line number="109" hits="6" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="110" hits="3" branch="false"/>
-                <line number="112" hits="3" branch="false"/>
-                <line number="117" hits="54" branch="false"/>
-                <line number="119" hits="54" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="53" hits="60" branch="false"/>
-            <line number="54" hits="60" branch="false"/>
-            <line number="55" hits="60" branch="false"/>
-            <line number="56" hits="60" branch="false"/>
-            <line number="66" hits="60" branch="false"/>
-            <line number="73" hits="60" branch="false"/>
-            <line number="96" hits="54" branch="false"/>
-            <line number="97" hits="54" branch="false"/>
-            <line number="98" hits="54" branch="false"/>
-            <line number="99" hits="54" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="100" hits="27" branch="false"/>
-            <line number="102" hits="27" branch="false"/>
-            <line number="106" hits="54" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="107" hits="6" branch="false"/>
-            <line number="108" hits="6" branch="false"/>
-            <line number="109" hits="6" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="110" hits="3" branch="false"/>
-            <line number="112" hits="3" branch="false"/>
-            <line number="117" hits="54" branch="false"/>
-            <line number="119" hits="54" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.config.ConfigDefineRule"
-               filename="org/apache/commons/chain/config/ConfigDefineRule.java" line-rate="1.0" branch-rate="1.0"
-               complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljava/lang/String;Ljava/lang/String;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="52" hits="60" branch="false"/>
-                <line number="53" hits="60" branch="false"/>
-                <line number="54" hits="60" branch="false"/>
-                <line number="55" hits="60" branch="false"/>
-                <line number="66" hits="60" branch="false"/>
-                <line number="73" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="begin" signature="(Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="93" hits="243" branch="false"/>
-                <line number="94" hits="243" branch="false"/>
-                <line number="97" hits="243" branch="false"/>
-                <line number="98" hits="243" branch="false"/>
-                <line number="99" hits="243" branch="false"/>
-                <line number="102" hits="243" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="52" hits="60" branch="false"/>
-            <line number="53" hits="60" branch="false"/>
-            <line number="54" hits="60" branch="false"/>
-            <line number="55" hits="60" branch="false"/>
-            <line number="66" hits="60" branch="false"/>
-            <line number="73" hits="60" branch="false"/>
-            <line number="93" hits="243" branch="false"/>
-            <line number="94" hits="243" branch="false"/>
-            <line number="97" hits="243" branch="false"/>
-            <line number="98" hits="243" branch="false"/>
-            <line number="99" hits="243" branch="false"/>
-            <line number="102" hits="243" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.config.ConfigParser"
-               filename="org/apache/commons/chain/config/ConfigParser.java" line-rate="0.8333333333333334"
-               branch-rate="0.6666666666666666" complexity="1.2857142857142858">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="38" hits="63" branch="false"/>
-                <line number="47" hits="63" branch="false"/>
-                <line number="54" hits="63" branch="false"/>
-                <line number="60" hits="63" branch="false"/>
-              </lines>
-            </method>
-            <method name="getDigester" signature="()Lorg/apache/commons/digester/Digester;" line-rate="1.0"
-                    branch-rate="0.5">
-              <lines>
-                <line number="73" hits="60" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="74" hits="60" branch="false"/>
-                <line number="75" hits="60" branch="false"/>
-                <line number="76" hits="60" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="60" branch="false"/>
-                <line number="78" hits="60" branch="false"/>
-                <line number="79" hits="60" branch="false"/>
-                <line number="81" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="getRuleSet" signature="()Lorg/apache/commons/digester/RuleSet;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="93" hits="66" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="94" hits="60" branch="false"/>
-                <line number="96" hits="66" branch="false"/>
-              </lines>
-            </method>
-            <method name="getUseContextClassLoader" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="123" hits="66" branch="false"/>
-              </lines>
-            </method>
-            <method name="parse" signature="(Ljava/net/URL;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="186" hits="27" branch="false"/>
-                <line number="187" hits="27" branch="false"/>
-                <line number="190" hits="27" branch="false"/>
-                <line number="192" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="parse" signature="(Lorg/apache/commons/chain/Catalog;Ljava/net/URL;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="162" hits="27" branch="false"/>
-                <line number="163" hits="27" branch="false"/>
-                <line number="164" hits="27" branch="false"/>
-                <line number="167" hits="27" branch="false"/>
-                <line number="169" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="setRuleSet" signature="(Lorg/apache/commons/digester/RuleSet;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="109" hits="0" branch="false"/>
-                <line number="110" hits="0" branch="false"/>
-                <line number="112" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setUseContextClassLoader" signature="(Z)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="135" hits="0" branch="false"/>
-                <line number="137" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="38" hits="63" branch="false"/>
-            <line number="47" hits="63" branch="false"/>
-            <line number="54" hits="63" branch="false"/>
-            <line number="60" hits="63" branch="false"/>
-            <line number="73" hits="60" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="74" hits="60" branch="false"/>
-            <line number="75" hits="60" branch="false"/>
-            <line number="76" hits="60" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="60" branch="false"/>
-            <line number="78" hits="60" branch="false"/>
-            <line number="79" hits="60" branch="false"/>
-            <line number="81" hits="60" branch="false"/>
-            <line number="93" hits="66" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="94" hits="60" branch="false"/>
-            <line number="96" hits="66" branch="false"/>
-            <line number="109" hits="0" branch="false"/>
-            <line number="110" hits="0" branch="false"/>
-            <line number="112" hits="0" branch="false"/>
-            <line number="123" hits="66" branch="false"/>
-            <line number="135" hits="0" branch="false"/>
-            <line number="137" hits="0" branch="false"/>
-            <line number="162" hits="27" branch="false"/>
-            <line number="163" hits="27" branch="false"/>
-            <line number="164" hits="27" branch="false"/>
-            <line number="167" hits="27" branch="false"/>
-            <line number="169" hits="27" branch="false"/>
-            <line number="186" hits="27" branch="false"/>
-            <line number="187" hits="27" branch="false"/>
-            <line number="190" hits="27" branch="false"/>
-            <line number="192" hits="27" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.config.ConfigRegisterRule"
-               filename="org/apache/commons/chain/config/ConfigRegisterRule.java" line-rate="0.8888888888888888"
-               branch-rate="0.5833333333333334" complexity="5.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="363" branch="false"/>
-                <line number="53" hits="363" branch="false"/>
-                <line number="54" hits="363" branch="false"/>
-                <line number="64" hits="363" branch="false"/>
-              </lines>
-            </method>
-            <method name="begin" signature="(Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V"
-                    line-rate="0.8571428571428571" branch-rate="0.5833333333333334">
-              <lines>
-                <line number="84" hits="2214" branch="false"/>
-                <line number="85" hits="2214" branch="true" condition-coverage="50% (2/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="87" hits="0" branch="false"/>
-                <line number="89" hits="2214" branch="false"/>
-                <line number="92" hits="2214" branch="false"/>
-                <line number="93" hits="2214" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="94" hits="0" branch="false"/>
-                <line number="98" hits="2214" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="99" hits="918" branch="false"/>
-                <line number="100" hits="918" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="101" hits="918" branch="false"/>
-                <line number="103" hits="918" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="104" hits="1296" branch="false"/>
-                <line number="107" hits="2214" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="52" hits="363" branch="false"/>
-            <line number="53" hits="363" branch="false"/>
-            <line number="54" hits="363" branch="false"/>
-            <line number="64" hits="363" branch="false"/>
-            <line number="84" hits="2214" branch="false"/>
-            <line number="85" hits="2214" branch="true" condition-coverage="50% (2/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="87" hits="0" branch="false"/>
-            <line number="89" hits="2214" branch="false"/>
-            <line number="92" hits="2214" branch="false"/>
-            <line number="93" hits="2214" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="94" hits="0" branch="false"/>
-            <line number="98" hits="2214" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="99" hits="918" branch="false"/>
-            <line number="100" hits="918" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="101" hits="918" branch="false"/>
-            <line number="103" hits="918" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="104" hits="1296" branch="false"/>
-            <line number="107" hits="2214" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.config.ConfigRuleSet"
-               filename="org/apache/commons/chain/config/ConfigRuleSet.java" line-rate="0.6046511627906976"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="80" hits="60" branch="false"/>
-                <line number="86" hits="60" branch="false"/>
-                <line number="87" hits="60" branch="false"/>
-                <line number="88" hits="60" branch="false"/>
-                <line number="89" hits="60" branch="false"/>
-                <line number="90" hits="60" branch="false"/>
-                <line number="91" hits="60" branch="false"/>
-                <line number="92" hits="60" branch="false"/>
-                <line number="93" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="addRuleInstances" signature="(Lorg/apache/commons/digester/Digester;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="272" hits="60" branch="false"/>
-                <line number="274" hits="60" branch="false"/>
-                <line number="277" hits="60" branch="false"/>
-                <line number="280" hits="60" branch="false"/>
-                <line number="281" hits="60" branch="false"/>
-                <line number="285" hits="60" branch="false"/>
-                <line number="288" hits="60" branch="false"/>
-                <line number="289" hits="60" branch="false"/>
-                <line number="293" hits="60" branch="false"/>
-                <line number="297" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogClass" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogElement" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="126" hits="120" branch="false"/>
-              </lines>
-            </method>
-            <method name="getChainClass" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="146" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="getChainElement" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="167" hits="186" branch="false"/>
-              </lines>
-            </method>
-            <method name="getClassAttribute" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="186" hits="186" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommandElement" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="205" hits="186" branch="false"/>
-              </lines>
-            </method>
-            <method name="getDefineElement" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="224" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="getNameAttribute" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="243" hits="66" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogClass" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="117" hits="0" branch="false"/>
-                <line number="118" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogElement" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="136" hits="0" branch="false"/>
-                <line number="137" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setChainClass" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="158" hits="0" branch="false"/>
-                <line number="159" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setChainElement" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="177" hits="0" branch="false"/>
-                <line number="178" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setClassAttribute" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="196" hits="0" branch="false"/>
-                <line number="197" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCommandElement" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="215" hits="0" branch="false"/>
-                <line number="216" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setDefineElement" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="234" hits="0" branch="false"/>
-                <line number="235" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setNameAttribute" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="253" hits="0" branch="false"/>
-                <line number="254" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="80" hits="60" branch="false"/>
-            <line number="86" hits="60" branch="false"/>
-            <line number="87" hits="60" branch="false"/>
-            <line number="88" hits="60" branch="false"/>
-            <line number="89" hits="60" branch="false"/>
-            <line number="90" hits="60" branch="false"/>
-            <line number="91" hits="60" branch="false"/>
-            <line number="92" hits="60" branch="false"/>
-            <line number="93" hits="60" branch="false"/>
-            <line number="105" hits="0" branch="false"/>
-            <line number="117" hits="0" branch="false"/>
-            <line number="118" hits="0" branch="false"/>
-            <line number="126" hits="120" branch="false"/>
-            <line number="136" hits="0" branch="false"/>
-            <line number="137" hits="0" branch="false"/>
-            <line number="146" hits="60" branch="false"/>
-            <line number="158" hits="0" branch="false"/>
-            <line number="159" hits="0" branch="false"/>
-            <line number="167" hits="186" branch="false"/>
-            <line number="177" hits="0" branch="false"/>
-            <line number="178" hits="0" branch="false"/>
-            <line number="186" hits="186" branch="false"/>
-            <line number="196" hits="0" branch="false"/>
-            <line number="197" hits="0" branch="false"/>
-            <line number="205" hits="186" branch="false"/>
-            <line number="215" hits="0" branch="false"/>
-            <line number="216" hits="0" branch="false"/>
-            <line number="224" hits="60" branch="false"/>
-            <line number="234" hits="0" branch="false"/>
-            <line number="235" hits="0" branch="false"/>
-            <line number="243" hits="66" branch="false"/>
-            <line number="253" hits="0" branch="false"/>
-            <line number="254" hits="0" branch="false"/>
-            <line number="272" hits="60" branch="false"/>
-            <line number="274" hits="60" branch="false"/>
-            <line number="277" hits="60" branch="false"/>
-            <line number="280" hits="60" branch="false"/>
-            <line number="281" hits="60" branch="false"/>
-            <line number="285" hits="60" branch="false"/>
-            <line number="288" hits="60" branch="false"/>
-            <line number="289" hits="60" branch="false"/>
-            <line number="293" hits="60" branch="false"/>
-            <line number="297" hits="60" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.generic" line-rate="0.6388888888888888" branch-rate="0.515625"
-             complexity="1.98">
-      <classes>
-        <class name="org.apache.commons.chain.generic.CopyCommand"
-               filename="org/apache/commons/chain/generic/CopyCommand.java" line-rate="0.0" branch-rate="0.0"
-               complexity="1.2857142857142858">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="32" hits="0" branch="false"/>
-                <line number="38" hits="0" branch="false"/>
-                <line number="64" hits="0" branch="false"/>
-                <line number="90" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="130" hits="0" branch="false"/>
-                <line number="132" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="0" branch="false"/>
-                <line number="136" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="137" hits="0" branch="false"/>
-                <line number="139" hits="0" branch="false"/>
-                <line number="142" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getFromKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="47" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getToKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getValue" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="99" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setFromKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="59" hits="0" branch="false"/>
-                <line number="61" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setToKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-                <line number="87" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setValue" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="111" hits="0" branch="false"/>
-                <line number="113" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="32" hits="0" branch="false"/>
-            <line number="38" hits="0" branch="false"/>
-            <line number="47" hits="0" branch="false"/>
-            <line number="59" hits="0" branch="false"/>
-            <line number="61" hits="0" branch="false"/>
-            <line number="64" hits="0" branch="false"/>
-            <line number="73" hits="0" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="87" hits="0" branch="false"/>
-            <line number="90" hits="0" branch="false"/>
-            <line number="99" hits="0" branch="false"/>
-            <line number="111" hits="0" branch="false"/>
-            <line number="113" hits="0" branch="false"/>
-            <line number="130" hits="0" branch="false"/>
-            <line number="132" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="0" branch="false"/>
-            <line number="136" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="137" hits="0" branch="false"/>
-            <line number="139" hits="0" branch="false"/>
-            <line number="142" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.generic.DispatchCommand"
-               filename="org/apache/commons/chain/generic/DispatchCommand.java" line-rate="0.8157894736842105"
-               branch-rate="0.625" complexity="2.4444444444444446">
-          <methods>
-            <method name="&lt;clinit&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="49" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="34" hits="9" branch="false"/>
-                <line number="37" hits="9" branch="false"/>
-                <line number="40" hits="9" branch="false"/>
-                <line number="43" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="class$" signature="(Ljava/lang/String;)Ljava/lang/Class;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-              </lines>
-            </method>
-            <method name="evaluateResult" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.75">
-              <lines>
-                <line number="128" hits="9" branch="false"/>
-                <line number="129" hits="9" branch="true" condition-coverage="75% (3/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.3333333333333333"
-                    branch-rate="0.5">
-              <lines>
-                <line number="65" hits="9" branch="true" condition-coverage="75% (3/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="false"/>
-                <line number="69" hits="9" branch="false"/>
-                <line number="72" hits="9" branch="false"/>
-                <line number="73" hits="0" branch="false"/>
-                <line number="74" hits="0" branch="false"/>
-                <line number="75" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="76" hits="0" branch="false"/>
-                <line number="78" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="extractMethod" signature="(Lorg/apache/commons/chain/Context;)Ljava/lang/reflect/Method;"
-                    line-rate="0.9285714285714286" branch-rate="0.6666666666666666">
-              <lines>
-                <line number="94" hits="9" branch="false"/>
-                <line number="96" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="97" hits="3" branch="false"/>
-                <line number="98" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="99" hits="0" branch="false"/>
-                <line number="101" hits="3" branch="false"/>
-                <line number="105" hits="9" branch="false"/>
-                <line number="107" hits="9" branch="false"/>
-                <line number="108" hits="9" branch="false"/>
-                <line number="110" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="111" hits="9" branch="false"/>
-                <line number="112" hits="9" branch="false"/>
-                <line number="114" hits="9" branch="false"/>
-                <line number="116" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="getArguments" signature="(Lorg/apache/commons/chain/Context;)[Ljava/lang/Object;"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="151" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="getMethod" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="159" hits="18" branch="false"/>
-              </lines>
-            </method>
-            <method name="getMethodKey" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="167" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="getSignature" signature="()[Ljava/lang/Class;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="138" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="setMethod" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="175" hits="6" branch="false"/>
-                <line number="176" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="setMethodKey" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="183" hits="3" branch="false"/>
-                <line number="184" hits="3" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="34" hits="9" branch="false"/>
-            <line number="37" hits="9" branch="false"/>
-            <line number="40" hits="9" branch="false"/>
-            <line number="43" hits="9" branch="false"/>
-            <line number="49" hits="6" branch="false"/>
-            <line number="65" hits="9" branch="true" condition-coverage="75% (3/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="false"/>
-            <line number="69" hits="9" branch="false"/>
-            <line number="72" hits="9" branch="false"/>
-            <line number="73" hits="0" branch="false"/>
-            <line number="74" hits="0" branch="false"/>
-            <line number="75" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="76" hits="0" branch="false"/>
-            <line number="78" hits="0" branch="false"/>
-            <line number="94" hits="9" branch="false"/>
-            <line number="96" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="97" hits="3" branch="false"/>
-            <line number="98" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="99" hits="0" branch="false"/>
-            <line number="101" hits="3" branch="false"/>
-            <line number="105" hits="9" branch="false"/>
-            <line number="107" hits="9" branch="false"/>
-            <line number="108" hits="9" branch="false"/>
-            <line number="110" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="111" hits="9" branch="false"/>
-            <line number="112" hits="9" branch="false"/>
-            <line number="114" hits="9" branch="false"/>
-            <line number="116" hits="9" branch="false"/>
-            <line number="128" hits="9" branch="false"/>
-            <line number="129" hits="9" branch="true" condition-coverage="75% (3/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="138" hits="6" branch="false"/>
-            <line number="151" hits="6" branch="false"/>
-            <line number="159" hits="18" branch="false"/>
-            <line number="167" hits="6" branch="false"/>
-            <line number="175" hits="6" branch="false"/>
-            <line number="176" hits="6" branch="false"/>
-            <line number="183" hits="3" branch="false"/>
-            <line number="184" hits="3" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.generic.DispatchLookupCommand"
-               filename="org/apache/commons/chain/generic/DispatchLookupCommand.java" line-rate="0.8717948717948718"
-               branch-rate="0.625" complexity="2.0">
-          <methods>
-            <method name="&lt;clinit&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="81" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="64" hits="18" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/CatalogFactory;)V" line-rate="0.6"
-                    branch-rate="1.0">
-              <lines>
-                <line number="72" hits="0" branch="false"/>
-                <line number="73" hits="0" branch="false"/>
-                <line number="87" hits="9" branch="false"/>
-                <line number="92" hits="9" branch="false"/>
-                <line number="93" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="class$" signature="(Ljava/lang/String;)Ljava/lang/Class;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="82" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.7777777777777778"
-                    branch-rate="0.6">
-              <lines>
-                <line number="142" hits="15" branch="true" condition-coverage="75% (3/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="143" hits="0" branch="false"/>
-                <line number="148" hits="15" branch="false"/>
-                <line number="150" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="151" hits="12" branch="false"/>
-                <line number="152" hits="12" branch="false"/>
-                <line number="153" hits="12" branch="false"/>
-                <line number="155" hits="12" branch="true" condition-coverage="50% (2/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="157" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="extractMethod"
-                    signature="(Lorg/apache/commons/chain/Command;Lorg/apache/commons/chain/Context;)Ljava/lang/reflect/Method;"
-                    line-rate="0.9285714285714286" branch-rate="0.6666666666666666">
-              <lines>
-                <line number="214" hits="12" branch="false"/>
-                <line number="216" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="217" hits="6" branch="false"/>
-                <line number="218" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="219" hits="0" branch="false"/>
-                <line number="222" hits="6" branch="false"/>
-                <line number="226" hits="12" branch="false"/>
-                <line number="228" hits="12" branch="false"/>
-                <line number="229" hits="12" branch="false"/>
-                <line number="231" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="232" hits="12" branch="false"/>
-                <line number="234" hits="12" branch="false"/>
-                <line number="236" hits="12" branch="false"/>
-                <line number="238" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="getArguments" signature="(Lorg/apache/commons/chain/Context;)[Ljava/lang/Object;"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="189" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="getMethod" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="100" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="getMethodKey" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="108" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="getSignature" signature="()[Ljava/lang/Class;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="174" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="setMethod" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="116" hits="9" branch="false"/>
-                <line number="117" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="setMethodKey" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="124" hits="6" branch="false"/>
-                <line number="125" hits="6" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="64" hits="18" branch="false"/>
-            <line number="72" hits="0" branch="false"/>
-            <line number="73" hits="0" branch="false"/>
-            <line number="81" hits="3" branch="false"/>
-            <line number="82" hits="3" branch="false"/>
-            <line number="87" hits="9" branch="false"/>
-            <line number="92" hits="9" branch="false"/>
-            <line number="93" hits="9" branch="false"/>
-            <line number="100" hits="27" branch="false"/>
-            <line number="108" hits="12" branch="false"/>
-            <line number="116" hits="9" branch="false"/>
-            <line number="117" hits="9" branch="false"/>
-            <line number="124" hits="6" branch="false"/>
-            <line number="125" hits="6" branch="false"/>
-            <line number="142" hits="15" branch="true" condition-coverage="75% (3/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="143" hits="0" branch="false"/>
-            <line number="148" hits="15" branch="false"/>
-            <line number="150" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="151" hits="12" branch="false"/>
-            <line number="152" hits="12" branch="false"/>
-            <line number="153" hits="12" branch="false"/>
-            <line number="155" hits="12" branch="true" condition-coverage="50% (2/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="157" hits="0" branch="false"/>
-            <line number="174" hits="12" branch="false"/>
-            <line number="189" hits="12" branch="false"/>
-            <line number="214" hits="12" branch="false"/>
-            <line number="216" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="217" hits="6" branch="false"/>
-            <line number="218" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="219" hits="0" branch="false"/>
-            <line number="222" hits="6" branch="false"/>
-            <line number="226" hits="12" branch="false"/>
-            <line number="228" hits="12" branch="false"/>
-            <line number="229" hits="12" branch="false"/>
-            <line number="231" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="232" hits="12" branch="false"/>
-            <line number="234" hits="12" branch="false"/>
-            <line number="236" hits="12" branch="false"/>
-            <line number="238" hits="12" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.generic.LookupCommand"
-               filename="org/apache/commons/chain/generic/LookupCommand.java" line-rate="0.6578947368421053"
-               branch-rate="0.4642857142857143" complexity="2.142857142857143">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="59" hits="24" branch="false"/>
-                <line number="60" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/CatalogFactory;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="70" hits="24" branch="false"/>
-                <line number="71" hits="24" branch="false"/>
-                <line number="72" hits="24" branch="false"/>
-                <line number="77" hits="24" branch="false"/>
-                <line number="103" hits="24" branch="false"/>
-                <line number="130" hits="24" branch="false"/>
-                <line number="158" hits="24" branch="false"/>
-                <line number="186" hits="24" branch="false"/>
-                <line number="212" hits="24" branch="false"/>
-                <line number="245" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.8571428571428571"
-                    branch-rate="0.75">
-              <lines>
-                <line number="303" hits="15" branch="false"/>
-                <line number="304" hits="15" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="305" hits="15" branch="false"/>
-                <line number="306" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="307" hits="3" branch="false"/>
-                <line number="309" hits="12" branch="false"/>
-                <line number="311" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalog" signature="(Lorg/apache/commons/chain/Context;)Lorg/apache/commons/chain/Catalog;"
-                    line-rate="0.6153846153846154" branch-rate="0.375">
-              <lines>
-                <line number="361" hits="30" branch="false"/>
-                <line number="362" hits="30" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="363" hits="0" branch="false"/>
-                <line number="366" hits="30" branch="false"/>
-                <line number="367" hits="30" branch="false"/>
-                <line number="368" hits="30" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="370" hits="30" branch="false"/>
-                <line number="372" hits="0" branch="false"/>
-                <line number="374" hits="30" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="375" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="376" hits="0" branch="false"/>
-                <line number="379" hits="0" branch="false"/>
-                <line number="384" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogFactory" signature="()Lorg/apache/commons/chain/CatalogFactory;" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="99" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogName" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="112" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommand" signature="(Lorg/apache/commons/chain/Context;)Lorg/apache/commons/chain/Command;"
-                    line-rate="0.8181818181818182" branch-rate="0.625">
-              <lines>
-                <line number="398" hits="30" branch="false"/>
-                <line number="400" hits="30" branch="false"/>
-                <line number="401" hits="30" branch="false"/>
-                <line number="402" hits="30" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="403" hits="30" branch="false"/>
-                <line number="404" hits="30" branch="true" condition-coverage="75% (3/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="405" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="406" hits="3" branch="false"/>
-                <line number="410" hits="0" branch="false"/>
-                <line number="415" hits="27" branch="false"/>
-                <line number="417" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommandName" signature="(Lorg/apache/commons/chain/Context;)Ljava/lang/String;"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="432" hits="30" branch="false"/>
-                <line number="433" hits="30" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="434" hits="6" branch="false"/>
-                <line number="436" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="getName" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="140" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="getNameKey" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="168" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="isIgnoreExecuteResult" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="226" hits="15" branch="false"/>
-              </lines>
-            </method>
-            <method name="isIgnorePostprocessResult" signature="()Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="260" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="isOptional" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="196" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="postprocess" signature="(Lorg/apache/commons/chain/Context;Ljava/lang/Exception;)Z"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="332" hits="0" branch="false"/>
-                <line number="333" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="334" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="335" hits="0" branch="false"/>
-                <line number="336" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="337" hits="0" branch="false"/>
-                <line number="339" hits="0" branch="false"/>
-                <line number="342" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogFactory" signature="(Lorg/apache/commons/chain/CatalogFactory;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="88" hits="0" branch="false"/>
-                <line number="89" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogName" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="0" branch="false"/>
-                <line number="127" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setIgnoreExecuteResult" signature="(Z)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="242" hits="3" branch="false"/>
-                <line number="243" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="setIgnorePostprocessResult" signature="(Z)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="276" hits="0" branch="false"/>
-                <line number="277" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setName" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="153" hits="18" branch="false"/>
-                <line number="155" hits="18" branch="false"/>
-              </lines>
-            </method>
-            <method name="setNameKey" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="181" hits="6" branch="false"/>
-                <line number="183" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="setOptional" signature="(Z)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="208" hits="0" branch="false"/>
-                <line number="210" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="59" hits="24" branch="false"/>
-            <line number="60" hits="24" branch="false"/>
-            <line number="70" hits="24" branch="false"/>
-            <line number="71" hits="24" branch="false"/>
-            <line number="72" hits="24" branch="false"/>
-            <line number="77" hits="24" branch="false"/>
-            <line number="88" hits="0" branch="false"/>
-            <line number="89" hits="0" branch="false"/>
-            <line number="99" hits="0" branch="false"/>
-            <line number="103" hits="24" branch="false"/>
-            <line number="112" hits="30" branch="false"/>
-            <line number="125" hits="0" branch="false"/>
-            <line number="127" hits="0" branch="false"/>
-            <line number="130" hits="24" branch="false"/>
-            <line number="140" hits="30" branch="false"/>
-            <line number="153" hits="18" branch="false"/>
-            <line number="155" hits="18" branch="false"/>
-            <line number="158" hits="24" branch="false"/>
-            <line number="168" hits="6" branch="false"/>
-            <line number="181" hits="6" branch="false"/>
-            <line number="183" hits="6" branch="false"/>
-            <line number="186" hits="24" branch="false"/>
-            <line number="196" hits="3" branch="false"/>
-            <line number="208" hits="0" branch="false"/>
-            <line number="210" hits="0" branch="false"/>
-            <line number="212" hits="24" branch="false"/>
-            <line number="226" hits="15" branch="false"/>
-            <line number="242" hits="3" branch="false"/>
-            <line number="243" hits="3" branch="false"/>
-            <line number="245" hits="24" branch="false"/>
-            <line number="260" hits="0" branch="false"/>
-            <line number="276" hits="0" branch="false"/>
-            <line number="277" hits="0" branch="false"/>
-            <line number="303" hits="15" branch="false"/>
-            <line number="304" hits="15" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="305" hits="15" branch="false"/>
-            <line number="306" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="307" hits="3" branch="false"/>
-            <line number="309" hits="12" branch="false"/>
-            <line number="311" hits="0" branch="false"/>
-            <line number="332" hits="0" branch="false"/>
-            <line number="333" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="334" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="335" hits="0" branch="false"/>
-            <line number="336" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="337" hits="0" branch="false"/>
-            <line number="339" hits="0" branch="false"/>
-            <line number="342" hits="0" branch="false"/>
-            <line number="361" hits="30" branch="false"/>
-            <line number="362" hits="30" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="363" hits="0" branch="false"/>
-            <line number="366" hits="30" branch="false"/>
-            <line number="367" hits="30" branch="false"/>
-            <line number="368" hits="30" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="370" hits="30" branch="false"/>
-            <line number="372" hits="0" branch="false"/>
-            <line number="374" hits="30" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="375" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="376" hits="0" branch="false"/>
-            <line number="379" hits="0" branch="false"/>
-            <line number="384" hits="30" branch="false"/>
-            <line number="398" hits="30" branch="false"/>
-            <line number="400" hits="30" branch="false"/>
-            <line number="401" hits="30" branch="false"/>
-            <line number="402" hits="30" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="403" hits="30" branch="false"/>
-            <line number="404" hits="30" branch="true" condition-coverage="75% (3/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="405" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="406" hits="3" branch="false"/>
-            <line number="410" hits="0" branch="false"/>
-            <line number="415" hits="27" branch="false"/>
-            <line number="417" hits="0" branch="false"/>
-            <line number="432" hits="30" branch="false"/>
-            <line number="433" hits="30" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="434" hits="6" branch="false"/>
-            <line number="436" hits="30" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.generic.RemoveCommand"
-               filename="org/apache/commons/chain/generic/RemoveCommand.java" line-rate="0.0" branch-rate="1.0"
-               complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="0" branch="false"/>
-                <line number="37" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="77" hits="0" branch="false"/>
-                <line number="78" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getFromKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="46" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setFromKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="58" hits="0" branch="false"/>
-                <line number="60" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="0" branch="false"/>
-            <line number="37" hits="0" branch="false"/>
-            <line number="46" hits="0" branch="false"/>
-            <line number="58" hits="0" branch="false"/>
-            <line number="60" hits="0" branch="false"/>
-            <line number="77" hits="0" branch="false"/>
-            <line number="78" hits="0" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.impl" line-rate="0.5766423357664233" branch-rate="0.546875"
-             complexity="2.59375">
-      <classes>
-        <class name="org.apache.commons.chain.impl.CatalogBase"
-               filename="org/apache/commons/chain/impl/CatalogBase.java" line-rate="0.35294117647058826"
-               branch-rate="0.0" complexity="1.3333333333333333">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="56" hits="234" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Ljava/util/Map;)V" line-rate="0.25" branch-rate="1.0">
-              <lines>
-                <line number="48" hits="117" branch="false"/>
-                <line number="66" hits="0" branch="false"/>
-                <line number="67" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="addCommand" signature="(Ljava/lang/String;Lorg/apache/commons/chain/Command;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="84" hits="999" branch="false"/>
-                <line number="86" hits="999" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommand" signature="(Ljava/lang/String;)Lorg/apache/commons/chain/Command;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="98" hits="318" branch="false"/>
-              </lines>
-            </method>
-            <method name="getNames" signature="()Ljava/util/Iterator;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="111" hits="18" branch="false"/>
-              </lines>
-            </method>
-            <method name="toString" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="121" hits="0" branch="false"/>
-                <line number="122" hits="0" branch="false"/>
-                <line number="125" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="126" hits="0" branch="false"/>
-                <line number="127" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="128" hits="0" branch="false"/>
-                <line number="131" hits="0" branch="false"/>
-                <line number="133" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="48" hits="117" branch="false"/>
-            <line number="56" hits="234" branch="false"/>
-            <line number="66" hits="0" branch="false"/>
-            <line number="67" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="84" hits="999" branch="false"/>
-            <line number="86" hits="999" branch="false"/>
-            <line number="98" hits="318" branch="false"/>
-            <line number="111" hits="18" branch="false"/>
-            <line number="121" hits="0" branch="false"/>
-            <line number="122" hits="0" branch="false"/>
-            <line number="125" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="126" hits="0" branch="false"/>
-            <line number="127" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="128" hits="0" branch="false"/>
-            <line number="131" hits="0" branch="false"/>
-            <line number="133" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.CatalogFactoryBase"
-               filename="org/apache/commons/chain/impl/CatalogFactoryBase.java" line-rate="0.875" branch-rate="1.0"
-               complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="72" branch="false"/>
-                <line number="52" hits="36" branch="false"/>
-                <line number="58" hits="36" branch="false"/>
-              </lines>
-            </method>
-            <method name="addCatalog" signature="(Ljava/lang/String;Lorg/apache/commons/chain/Catalog;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="114" hits="12" branch="false"/>
-                <line number="115" hits="12" branch="false"/>
-                <line number="116" hits="12" branch="false"/>
-                <line number="118" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalog" signature="()Lorg/apache/commons/chain/Catalog;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="72" hits="96" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalog" signature="(Ljava/lang/String;)Lorg/apache/commons/chain/Catalog;"
-                    line-rate="0.6666666666666666" branch-rate="1.0">
-              <lines>
-                <line number="98" hits="75" branch="false"/>
-                <line number="99" hits="75" branch="false"/>
-                <line number="100" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getNames" signature="()Ljava/util/Iterator;" line-rate="0.6666666666666666" branch-rate="1.0">
-              <lines>
-                <line number="129" hits="15" branch="false"/>
-                <line number="130" hits="15" branch="false"/>
-                <line number="131" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalog" signature="(Lorg/apache/commons/chain/Catalog;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="84" hits="36" branch="false"/>
-                <line number="86" hits="36" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="72" branch="false"/>
-            <line number="52" hits="36" branch="false"/>
-            <line number="58" hits="36" branch="false"/>
-            <line number="72" hits="96" branch="false"/>
-            <line number="84" hits="36" branch="false"/>
-            <line number="86" hits="36" branch="false"/>
-            <line number="98" hits="75" branch="false"/>
-            <line number="99" hits="75" branch="false"/>
-            <line number="100" hits="0" branch="false"/>
-            <line number="114" hits="12" branch="false"/>
-            <line number="115" hits="12" branch="false"/>
-            <line number="116" hits="12" branch="false"/>
-            <line number="118" hits="12" branch="false"/>
-            <line number="129" hits="15" branch="false"/>
-            <line number="130" hits="15" branch="false"/>
-            <line number="131" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ChainBase" filename="org/apache/commons/chain/impl/ChainBase.java"
-               line-rate="0.576271186440678" branch-rate="0.5" complexity="4.285714285714286">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="44" hits="552" branch="false"/>
-                <line number="46" hits="552" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Ljava/util/Collection;)V" line-rate="0.2222222222222222"
-                    branch-rate="0.0">
-              <lines>
-                <line number="97" hits="0" branch="false"/>
-                <line number="99" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="100" hits="0" branch="false"/>
-                <line number="102" hits="0" branch="false"/>
-                <line number="103" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="104" hits="0" branch="false"/>
-                <line number="107" hits="0" branch="false"/>
-                <line number="118" hits="552" branch="false"/>
-                <line number="125" hits="552" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/Command;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="58" hits="0" branch="false"/>
-                <line number="60" hits="0" branch="false"/>
-                <line number="62" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="([Lorg/apache/commons/chain/Command;)V" line-rate="0.0"
-                    branch-rate="0.0">
-              <lines>
-                <line number="75" hits="0" branch="false"/>
-                <line number="77" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="78" hits="0" branch="false"/>
-                <line number="80" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="81" hits="0" branch="false"/>
-                <line number="84" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="addCommand" signature="(Lorg/apache/commons/chain/Command;)V" line-rate="0.7777777777777778"
-                    branch-rate="0.5">
-              <lines>
-                <line number="142" hits="1416" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="143" hits="0" branch="false"/>
-                <line number="145" hits="1416" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="146" hits="0" branch="false"/>
-                <line number="148" hits="1416" branch="false"/>
-                <line number="149" hits="1416" branch="false"/>
-                <line number="150" hits="1416" branch="false"/>
-                <line number="151" hits="1416" branch="false"/>
-                <line number="153" hits="1416" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.7586206896551724"
-                    branch-rate="0.7222222222222222">
-              <lines>
-                <line number="176" hits="99" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="177" hits="0" branch="false"/>
-                <line number="181" hits="99" branch="false"/>
-                <line number="185" hits="99" branch="false"/>
-                <line number="186" hits="99" branch="false"/>
-                <line number="187" hits="99" branch="false"/>
-                <line number="188" hits="99" branch="false"/>
-                <line number="189" hits="261" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="191" hits="237" branch="false"/>
-                <line number="192" hits="237" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="193" hits="75" branch="false"/>
-                <line number="195" hits="0" branch="false"/>
-                <line number="196" hits="0" branch="false"/>
-                <line number="197" hits="0" branch="false"/>
-                <line number="198" hits="162" branch="false"/>
-                <line number="202" hits="99" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="203" hits="24" branch="false"/>
-                <line number="205" hits="99" branch="false"/>
-                <line number="206" hits="99" branch="false"/>
-                <line number="207" hits="336" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="208" hits="237" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="210" hits="81" branch="false"/>
-                <line number="213" hits="81" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="214" hits="0" branch="false"/>
-                <line number="216" hits="0" branch="false"/>
-                <line number="218" hits="81" branch="false"/>
-                <line number="223" hits="99" branch="true" condition-coverage="25% (1/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="224" hits="0" branch="false"/>
-                <line number="226" hits="99" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommands" signature="()[Lorg/apache/commons/chain/Command;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="242" hits="15" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="44" hits="552" branch="false"/>
-            <line number="46" hits="552" branch="false"/>
-            <line number="58" hits="0" branch="false"/>
-            <line number="60" hits="0" branch="false"/>
-            <line number="62" hits="0" branch="false"/>
-            <line number="75" hits="0" branch="false"/>
-            <line number="77" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="78" hits="0" branch="false"/>
-            <line number="80" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="81" hits="0" branch="false"/>
-            <line number="84" hits="0" branch="false"/>
-            <line number="97" hits="0" branch="false"/>
-            <line number="99" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="100" hits="0" branch="false"/>
-            <line number="102" hits="0" branch="false"/>
-            <line number="103" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="104" hits="0" branch="false"/>
-            <line number="107" hits="0" branch="false"/>
-            <line number="118" hits="552" branch="false"/>
-            <line number="125" hits="552" branch="false"/>
-            <line number="142" hits="1416" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="143" hits="0" branch="false"/>
-            <line number="145" hits="1416" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="146" hits="0" branch="false"/>
-            <line number="148" hits="1416" branch="false"/>
-            <line number="149" hits="1416" branch="false"/>
-            <line number="150" hits="1416" branch="false"/>
-            <line number="151" hits="1416" branch="false"/>
-            <line number="153" hits="1416" branch="false"/>
-            <line number="176" hits="99" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="177" hits="0" branch="false"/>
-            <line number="181" hits="99" branch="false"/>
-            <line number="185" hits="99" branch="false"/>
-            <line number="186" hits="99" branch="false"/>
-            <line number="187" hits="99" branch="false"/>
-            <line number="188" hits="99" branch="false"/>
-            <line number="189" hits="261" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="191" hits="237" branch="false"/>
-            <line number="192" hits="237" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="193" hits="75" branch="false"/>
-            <line number="195" hits="0" branch="false"/>
-            <line number="196" hits="0" branch="false"/>
-            <line number="197" hits="0" branch="false"/>
-            <line number="198" hits="162" branch="false"/>
-            <line number="202" hits="99" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="203" hits="24" branch="false"/>
-            <line number="205" hits="99" branch="false"/>
-            <line number="206" hits="99" branch="false"/>
-            <line number="207" hits="336" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="208" hits="237" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="210" hits="81" branch="false"/>
-            <line number="213" hits="81" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="214" hits="0" branch="false"/>
-            <line number="216" hits="0" branch="false"/>
-            <line number="218" hits="81" branch="false"/>
-            <line number="223" hits="99" branch="true" condition-coverage="25% (1/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="224" hits="0" branch="false"/>
-            <line number="226" hits="99" branch="false"/>
-            <line number="242" hits="15" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.7927927927927928"
-               branch-rate="0.7878787878787878" complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;clinit&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-                <line number="138" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="64" hits="558" branch="false"/>
-                <line number="65" hits="558" branch="false"/>
-                <line number="67" hits="558" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Ljava/util/Map;)V" line-rate="0.3333333333333333" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-                <line number="86" hits="0" branch="false"/>
-                <line number="87" hits="0" branch="false"/>
-                <line number="89" hits="0" branch="false"/>
-                <line number="107" hits="558" branch="false"/>
-                <line number="113" hits="558" branch="false"/>
-              </lines>
-            </method>
-            <method name="access$400"
-                    signature="(Lorg/apache/commons/chain/impl/ContextBase;Ljava/lang/Object;)Ljava/util/Map$Entry;"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-              </lines>
-            </method>
-            <method name="access$500" signature="(Lorg/apache/commons/chain/impl/ContextBase;)Ljava/util/Iterator;"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-              </lines>
-            </method>
-            <method name="access$600" signature="(Lorg/apache/commons/chain/impl/ContextBase;Ljava/util/Map$Entry;)Z"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-              </lines>
-            </method>
-            <method name="access$700" signature="(Lorg/apache/commons/chain/impl/ContextBase;)Ljava/util/Iterator;"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="53" hits="816" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="150" hits="24" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="151" hits="6" branch="false"/>
-                <line number="153" hits="18" branch="false"/>
-                <line number="154" hits="207" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="155" hits="189" branch="false"/>
-                <line number="156" hits="189" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="157" hits="27" branch="false"/>
-                <line number="159" hits="189" branch="false"/>
-                <line number="162" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.7692307692307693"
-                    branch-rate="0.7142857142857143">
-              <lines>
-                <line number="179" hits="108" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="180" hits="27" branch="false"/>
-                <line number="184" hits="81" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="185" hits="36" branch="false"/>
-                <line number="189" hits="540" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="190" hits="495" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="191" hits="480" branch="false"/>
-                <line number="192" hits="480" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="193" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="194" hits="0" branch="false"/>
-                <line number="196" hits="480" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="197" hits="0" branch="false"/>
-                <line number="201" hits="45" branch="false"/>
-              </lines>
-            </method>
-            <method name="entriesIterator" signature="()Ljava/util/Iterator;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="428" hits="108" branch="false"/>
-              </lines>
-            </method>
-            <method name="entry" signature="(Ljava/lang/Object;)Ljava/util/Map$Entry;" line-rate="0.6666666666666666"
-                    branch-rate="0.5">
-              <lines>
-                <line number="441" hits="708" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="442" hits="708" branch="false"/>
-                <line number="444" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="217" hits="108" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="0.875">
-              <lines>
-                <line number="243" hits="1593" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="244" hits="561" branch="false"/>
-                <line number="248" hits="1032" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="249" hits="1032" branch="false"/>
-                <line number="251" hits="1032" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="252" hits="816" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="253" hits="783" branch="false"/>
-                <line number="255" hits="33" branch="false"/>
-                <line number="261" hits="216" branch="false"/>
-              </lines>
-            </method>
-            <method name="initialize" signature="()V" line-rate="0.8333333333333334" branch-rate="1.0">
-              <lines>
-                <line number="465" hits="558" branch="false"/>
-                <line number="467" hits="0" branch="false"/>
-                <line number="468" hits="0" branch="false"/>
-                <line number="469" hits="558" branch="false"/>
-                <line number="472" hits="4833" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="473" hits="4275" branch="false"/>
-                <line number="476" hits="4275" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="477" hits="3159" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="478" hits="333" branch="false"/>
-                <line number="480" hits="3159" branch="false"/>
-                <line number="481" hits="3159" branch="false"/>
-                <line number="485" hits="558" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="277" hits="177" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="278" hits="39" branch="false"/>
-                <line number="282" hits="138" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="299" hits="330" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="0.875">
-              <lines>
-                <line number="321" hits="375" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="322" hits="195" branch="false"/>
-                <line number="326" hits="180" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="327" hits="180" branch="false"/>
-                <line number="329" hits="180" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="330" hits="9" branch="false"/>
-                <line number="331" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="332" hits="6" branch="false"/>
-                <line number="334" hits="9" branch="false"/>
-                <line number="335" hits="6" branch="false"/>
-                <line number="340" hits="171" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="360" hits="12" branch="false"/>
-                <line number="361" hits="48" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="362" hits="36" branch="false"/>
-                <line number="363" hits="36" branch="false"/>
-                <line number="364" hits="36" branch="false"/>
-                <line number="366" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="readProperty" signature="(Ljava/beans/PropertyDescriptor;)Ljava/lang/Object;" line-rate="0.5"
-                    branch-rate="0.5">
-              <lines>
-                <line number="502" hits="1269" branch="false"/>
-                <line number="503" hits="1269" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="504" hits="0" branch="false"/>
-                <line number="508" hits="1269" branch="false"/>
-                <line number="509" hits="0" branch="false"/>
-                <line number="510" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="0.8571428571428571"
-                    branch-rate="0.6666666666666666">
-              <lines>
-                <line number="383" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="384" hits="9" branch="false"/>
-                <line number="388" hits="27" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="389" hits="27" branch="false"/>
-                <line number="391" hits="27" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="392" hits="0" branch="false"/>
-                <line number="398" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/util/Map$Entry;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="530" hits="0" branch="false"/>
-                <line number="531" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="532" hits="0" branch="false"/>
-                <line number="533" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="534" hits="0" branch="false"/>
-                <line number="536" hits="0" branch="false"/>
-                <line number="537" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="414" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="valuesIterator" signature="()Ljava/util/Iterator;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="549" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="writeProperty" signature="(Ljava/beans/PropertyDescriptor;Ljava/lang/Object;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="570" hits="9" branch="false"/>
-                <line number="571" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="572" hits="3" branch="false"/>
-                <line number="576" hits="6" branch="false"/>
-                <line number="577" hits="3" branch="false"/>
-                <line number="578" hits="3" branch="false"/>
-                <line number="581" hits="6" branch="false"/>
-                <line number="583" hits="6" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="53" hits="816" branch="false"/>
-            <line number="64" hits="558" branch="false"/>
-            <line number="65" hits="558" branch="false"/>
-            <line number="67" hits="558" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="86" hits="0" branch="false"/>
-            <line number="87" hits="0" branch="false"/>
-            <line number="89" hits="0" branch="false"/>
-            <line number="107" hits="558" branch="false"/>
-            <line number="113" hits="558" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="138" hits="3" branch="false"/>
-            <line number="150" hits="24" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="151" hits="6" branch="false"/>
-            <line number="153" hits="18" branch="false"/>
-            <line number="154" hits="207" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="155" hits="189" branch="false"/>
-            <line number="156" hits="189" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="157" hits="27" branch="false"/>
-            <line number="159" hits="189" branch="false"/>
-            <line number="162" hits="24" branch="false"/>
-            <line number="179" hits="108" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="180" hits="27" branch="false"/>
-            <line number="184" hits="81" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="185" hits="36" branch="false"/>
-            <line number="189" hits="540" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="190" hits="495" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="191" hits="480" branch="false"/>
-            <line number="192" hits="480" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="193" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="194" hits="0" branch="false"/>
-            <line number="196" hits="480" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="197" hits="0" branch="false"/>
-            <line number="201" hits="45" branch="false"/>
-            <line number="217" hits="108" branch="false"/>
-            <line number="243" hits="1593" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="244" hits="561" branch="false"/>
-            <line number="248" hits="1032" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="249" hits="1032" branch="false"/>
-            <line number="251" hits="1032" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="252" hits="816" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="253" hits="783" branch="false"/>
-            <line number="255" hits="33" branch="false"/>
-            <line number="261" hits="216" branch="false"/>
-            <line number="277" hits="177" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="278" hits="39" branch="false"/>
-            <line number="282" hits="138" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="299" hits="330" branch="false"/>
-            <line number="321" hits="375" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="322" hits="195" branch="false"/>
-            <line number="326" hits="180" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="327" hits="180" branch="false"/>
-            <line number="329" hits="180" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="330" hits="9" branch="false"/>
-            <line number="331" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="332" hits="6" branch="false"/>
-            <line number="334" hits="9" branch="false"/>
-            <line number="335" hits="6" branch="false"/>
-            <line number="340" hits="171" branch="false"/>
-            <line number="360" hits="12" branch="false"/>
-            <line number="361" hits="48" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="362" hits="36" branch="false"/>
-            <line number="363" hits="36" branch="false"/>
-            <line number="364" hits="36" branch="false"/>
-            <line number="366" hits="12" branch="false"/>
-            <line number="383" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="384" hits="9" branch="false"/>
-            <line number="388" hits="27" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="389" hits="27" branch="false"/>
-            <line number="391" hits="27" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="392" hits="0" branch="false"/>
-            <line number="398" hits="27" branch="false"/>
-            <line number="414" hits="0" branch="false"/>
-            <line number="428" hits="108" branch="false"/>
-            <line number="441" hits="708" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="442" hits="708" branch="false"/>
-            <line number="444" hits="0" branch="false"/>
-            <line number="465" hits="558" branch="false"/>
-            <line number="467" hits="0" branch="false"/>
-            <line number="468" hits="0" branch="false"/>
-            <line number="469" hits="558" branch="false"/>
-            <line number="472" hits="4833" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="473" hits="4275" branch="false"/>
-            <line number="476" hits="4275" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="477" hits="3159" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="478" hits="333" branch="false"/>
-            <line number="480" hits="3159" branch="false"/>
-            <line number="481" hits="3159" branch="false"/>
-            <line number="485" hits="558" branch="false"/>
-            <line number="502" hits="1269" branch="false"/>
-            <line number="503" hits="1269" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="504" hits="0" branch="false"/>
-            <line number="508" hits="1269" branch="false"/>
-            <line number="509" hits="0" branch="false"/>
-            <line number="510" hits="0" branch="false"/>
-            <line number="530" hits="0" branch="false"/>
-            <line number="531" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="532" hits="0" branch="false"/>
-            <line number="533" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="534" hits="0" branch="false"/>
-            <line number="536" hits="0" branch="false"/>
-            <line number="537" hits="0" branch="false"/>
-            <line number="549" hits="0" branch="false"/>
-            <line number="570" hits="9" branch="false"/>
-            <line number="571" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="572" hits="3" branch="false"/>
-            <line number="576" hits="6" branch="false"/>
-            <line number="577" hits="3" branch="false"/>
-            <line number="578" hits="3" branch="false"/>
-            <line number="581" hits="6" branch="false"/>
-            <line number="583" hits="6" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase$1"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.5" branch-rate="1.0"
-               complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="126" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="127" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="126" hits="3" branch="false"/>
-            <line number="127" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase$EntrySetImpl"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.125" branch-rate="0.0"
-               complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/impl/ContextBase;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;"
-                    signature="(Lorg/apache/commons/chain/impl/ContextBase;Lorg/apache/commons/chain/impl/ContextBase$1;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="593" hits="216" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="596" hits="0" branch="false"/>
-                <line number="597" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="contains" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="600" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="601" hits="0" branch="false"/>
-                <line number="603" hits="0" branch="false"/>
-                <line number="604" hits="0" branch="false"/>
-                <line number="605" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="606" hits="0" branch="false"/>
-                <line number="608" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="613" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="iterator" signature="()Ljava/util/Iterator;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="617" hits="108" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="621" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="622" hits="0" branch="false"/>
-                <line number="624" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="629" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="593" hits="216" branch="false"/>
-            <line number="596" hits="0" branch="false"/>
-            <line number="597" hits="0" branch="false"/>
-            <line number="600" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="601" hits="0" branch="false"/>
-            <line number="603" hits="0" branch="false"/>
-            <line number="604" hits="0" branch="false"/>
-            <line number="605" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="606" hits="0" branch="false"/>
-            <line number="608" hits="0" branch="false"/>
-            <line number="613" hits="0" branch="false"/>
-            <line number="617" hits="108" branch="false"/>
-            <line number="621" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="622" hits="0" branch="false"/>
-            <line number="624" hits="0" branch="false"/>
-            <line number="629" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase$EntrySetIterator"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.75" branch-rate="1.0"
-               complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/impl/ContextBase;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="641" hits="108" branch="false"/>
-                <line number="642" hits="108" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;"
-                    signature="(Lorg/apache/commons/chain/impl/ContextBase;Lorg/apache/commons/chain/impl/ContextBase$1;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="639" hits="216" branch="false"/>
-              </lines>
-            </method>
-            <method name="hasNext" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="645" hits="816" branch="false"/>
-              </lines>
-            </method>
-            <method name="next" signature="()Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="649" hits="708" branch="false"/>
-                <line number="650" hits="708" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="654" hits="0" branch="false"/>
-                <line number="655" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="639" hits="216" branch="false"/>
-            <line number="641" hits="108" branch="false"/>
-            <line number="642" hits="108" branch="false"/>
-            <line number="645" hits="816" branch="false"/>
-            <line number="649" hits="708" branch="false"/>
-            <line number="650" hits="708" branch="false"/>
-            <line number="654" hits="0" branch="false"/>
-            <line number="655" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase$MapEntryImpl"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.2916666666666667"
-               branch-rate="0.16666666666666666" complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;init&gt;"
-                    signature="(Lorg/apache/commons/chain/impl/ContextBase;Ljava/lang/Object;Ljava/lang/Object;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="666" hits="708" branch="false"/>
-                <line number="667" hits="708" branch="false"/>
-                <line number="668" hits="708" branch="false"/>
-                <line number="669" hits="708" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="675" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="676" hits="0" branch="false"/>
-                <line number="677" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="678" hits="0" branch="false"/>
-                <line number="680" hits="0" branch="false"/>
-                <line number="681" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="682" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="684" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="685" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="686" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="688" hits="0" branch="false"/>
-                <line number="691" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getKey" signature="()Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="696" hits="36" branch="false"/>
-              </lines>
-            </method>
-            <method name="getValue" signature="()Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="700" hits="36" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="0.75">
-              <lines>
-                <line number="704" hits="672" branch="true" condition-coverage="75% (3/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="setValue" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="709" hits="0" branch="false"/>
-                <line number="710" hits="0" branch="false"/>
-                <line number="711" hits="0" branch="false"/>
-                <line number="712" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="toString" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="716" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="666" hits="708" branch="false"/>
-            <line number="667" hits="708" branch="false"/>
-            <line number="668" hits="708" branch="false"/>
-            <line number="669" hits="708" branch="false"/>
-            <line number="675" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="676" hits="0" branch="false"/>
-            <line number="677" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="678" hits="0" branch="false"/>
-            <line number="680" hits="0" branch="false"/>
-            <line number="681" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="682" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="684" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="685" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="686" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="688" hits="0" branch="false"/>
-            <line number="691" hits="0" branch="false"/>
-            <line number="696" hits="36" branch="false"/>
-            <line number="700" hits="36" branch="false"/>
-            <line number="704" hits="672" branch="true" condition-coverage="75% (3/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="709" hits="0" branch="false"/>
-            <line number="710" hits="0" branch="false"/>
-            <line number="711" hits="0" branch="false"/>
-            <line number="712" hits="0" branch="false"/>
-            <line number="716" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase$ValuesImpl"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.0" branch-rate="0.0"
-               complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/impl/ContextBase;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;"
-                    signature="(Lorg/apache/commons/chain/impl/ContextBase;Lorg/apache/commons/chain/impl/ContextBase$1;)V"
-                    line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="725" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="728" hits="0" branch="false"/>
-                <line number="729" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="contains" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="732" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="733" hits="0" branch="false"/>
-                <line number="735" hits="0" branch="false"/>
-                <line number="736" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="740" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="iterator" signature="()Ljava/util/Iterator;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="744" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="748" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="749" hits="0" branch="false"/>
-                <line number="751" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="756" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="725" hits="0" branch="false"/>
-            <line number="728" hits="0" branch="false"/>
-            <line number="729" hits="0" branch="false"/>
-            <line number="732" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="733" hits="0" branch="false"/>
-            <line number="735" hits="0" branch="false"/>
-            <line number="736" hits="0" branch="false"/>
-            <line number="740" hits="0" branch="false"/>
-            <line number="744" hits="0" branch="false"/>
-            <line number="748" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="749" hits="0" branch="false"/>
-            <line number="751" hits="0" branch="false"/>
-            <line number="756" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.impl.ContextBase$ValuesIterator"
-               filename="org/apache/commons/chain/impl/ContextBase.java" line-rate="0.0" branch-rate="1.0"
-               complexity="2.7111111111111112">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Lorg/apache/commons/chain/impl/ContextBase;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="768" hits="0" branch="false"/>
-                <line number="769" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;"
-                    signature="(Lorg/apache/commons/chain/impl/ContextBase;Lorg/apache/commons/chain/impl/ContextBase$1;)V"
-                    line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="766" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="hasNext" signature="()Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="772" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="next" signature="()Ljava/lang/Object;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="776" hits="0" branch="false"/>
-                <line number="777" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="781" hits="0" branch="false"/>
-                <line number="782" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="766" hits="0" branch="false"/>
-            <line number="768" hits="0" branch="false"/>
-            <line number="769" hits="0" branch="false"/>
-            <line number="772" hits="0" branch="false"/>
-            <line number="776" hits="0" branch="false"/>
-            <line number="777" hits="0" branch="false"/>
-            <line number="781" hits="0" branch="false"/>
-            <line number="782" hits="0" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.web" line-rate="0.22014925373134328" branch-rate="0.16666666666666666"
-             complexity="3.5277777777777777">
-      <classes>
-        <class name="org.apache.commons.chain.web.AbstractGetLocaleCommand"
-               filename="org/apache/commons/chain/web/AbstractGetLocaleCommand.java" line-rate="1.0" branch-rate="1.0"
-               complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="34" hits="18" branch="false"/>
-                <line number="43" hits="18" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="86" hits="18" branch="false"/>
-                <line number="87" hits="18" branch="false"/>
-              </lines>
-            </method>
-            <method name="getLocaleKey" signature="()Ljava/lang/String;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="54" hits="54" branch="false"/>
-              </lines>
-            </method>
-            <method name="setLocaleKey" signature="(Ljava/lang/String;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="67" hits="9" branch="false"/>
-                <line number="69" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="34" hits="18" branch="false"/>
-            <line number="43" hits="18" branch="false"/>
-            <line number="54" hits="54" branch="false"/>
-            <line number="67" hits="9" branch="false"/>
-            <line number="69" hits="9" branch="false"/>
-            <line number="86" hits="18" branch="false"/>
-            <line number="87" hits="18" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.AbstractSetLocaleCommand"
-               filename="org/apache/commons/chain/web/AbstractSetLocaleCommand.java" line-rate="0.0" branch-rate="1.0"
-               complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="35" hits="0" branch="false"/>
-                <line number="44" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="execute" signature="(Lorg/apache/commons/chain/Context;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="87" hits="0" branch="false"/>
-                <line number="89" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getLocaleKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="55" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setLocaleKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="68" hits="0" branch="false"/>
-                <line number="70" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="35" hits="0" branch="false"/>
-            <line number="44" hits="0" branch="false"/>
-            <line number="55" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="70" hits="0" branch="false"/>
-            <line number="87" hits="0" branch="false"/>
-            <line number="89" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.ChainListener"
-               filename="org/apache/commons/chain/web/ChainListener.java" line-rate="0.0" branch-rate="0.0"
-               complexity="7.4">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="99" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="class$" signature="(Ljava/lang/String;)Ljava/lang/Class;" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="169" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="contextDestroyed" signature="(Ljavax/servlet/ServletContextEvent;)V" line-rate="0.0"
-                    branch-rate="0.0">
-              <lines>
-                <line number="150" hits="0" branch="false"/>
-                <line number="151" hits="0" branch="false"/>
-                <line number="152" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="153" hits="0" branch="false"/>
-                <line number="155" hits="0" branch="false"/>
-                <line number="157" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="contextInitialized" signature="(Ljavax/servlet/ServletContextEvent;)V" line-rate="0.0"
-                    branch-rate="0.0">
-              <lines>
-                <line number="170" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="171" hits="0" branch="false"/>
-                <line number="173" hits="0" branch="false"/>
-                <line number="176" hits="0" branch="false"/>
-                <line number="177" hits="0" branch="false"/>
-                <line number="179" hits="0" branch="false"/>
-                <line number="180" hits="0" branch="false"/>
-                <line number="183" hits="0" branch="false"/>
-                <line number="184" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="185" hits="0" branch="false"/>
-                <line number="186" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="187" hits="0" branch="false"/>
-                <line number="192" hits="0" branch="false"/>
-                <line number="193" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="195" hits="0" branch="false"/>
-                <line number="197" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="198" hits="0" branch="false"/>
-                <line number="200" hits="0" branch="false"/>
-                <line number="201" hits="0" branch="false"/>
-                <line number="202" hits="0" branch="false"/>
-                <line number="203" hits="0" branch="false"/>
-                <line number="206" hits="0" branch="false"/>
-                <line number="210" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="211" hits="0" branch="false"/>
-                <line number="212" hits="0" branch="false"/>
-                <line number="214" hits="0" branch="false"/>
-                <line number="217" hits="0" branch="false"/>
-                <line number="218" hits="0" branch="false"/>
-                <line number="220" hits="0" branch="false"/>
-                <line number="225" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="226" hits="0" branch="false"/>
-                <line number="229" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="parseJarResources"
-                    signature="(Ljavax/servlet/ServletContext;Lorg/apache/commons/chain/config/ConfigParser;Lorg/apache/commons/logging/Log;)V"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="245" hits="0" branch="false"/>
-                <line number="246" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="247" hits="0" branch="false"/>
-                <line number="249" hits="0" branch="false"/>
-                <line number="250" hits="0" branch="false"/>
-                <line number="251" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="253" hits="0" branch="false"/>
-                <line number="254" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="255" hits="0" branch="false"/>
-                <line number="257" hits="0" branch="false"/>
-                <line number="259" hits="0" branch="false"/>
-                <line number="260" hits="0" branch="false"/>
-                <line number="263" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="264" hits="0" branch="false"/>
-                <line number="266" hits="0" branch="false"/>
-                <line number="268" hits="0" branch="false"/>
-                <line number="269" hits="0" branch="false"/>
-                <line number="271" hits="0" branch="false"/>
-                <line number="272" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="273" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="274" hits="0" branch="false"/>
-                <line number="276" hits="0" branch="false"/>
-                <line number="278" hits="0" branch="false"/>
-                <line number="280" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="281" hits="0" branch="false"/>
-                <line number="283" hits="0" branch="false"/>
-                <line number="284" hits="0" branch="false"/>
-                <line number="285" hits="0" branch="false"/>
-                <line number="289" hits="0" branch="false"/>
-                <line number="290" hits="0" branch="false"/>
-                <line number="292" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="parseJarResources"
-                    signature="(Lorg/apache/commons/chain/Catalog;Ljavax/servlet/ServletContext;Lorg/apache/commons/chain/config/ConfigParser;Lorg/apache/commons/logging/Log;)V"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="309" hits="0" branch="false"/>
-                <line number="310" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="311" hits="0" branch="false"/>
-                <line number="313" hits="0" branch="false"/>
-                <line number="314" hits="0" branch="false"/>
-                <line number="315" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="317" hits="0" branch="false"/>
-                <line number="318" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="319" hits="0" branch="false"/>
-                <line number="321" hits="0" branch="false"/>
-                <line number="323" hits="0" branch="false"/>
-                <line number="324" hits="0" branch="false"/>
-                <line number="327" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="328" hits="0" branch="false"/>
-                <line number="330" hits="0" branch="false"/>
-                <line number="332" hits="0" branch="false"/>
-                <line number="333" hits="0" branch="false"/>
-                <line number="335" hits="0" branch="false"/>
-                <line number="336" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="337" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="338" hits="0" branch="false"/>
-                <line number="340" hits="0" branch="false"/>
-                <line number="342" hits="0" branch="false"/>
-                <line number="344" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="345" hits="0" branch="false"/>
-                <line number="347" hits="0" branch="false"/>
-                <line number="348" hits="0" branch="false"/>
-                <line number="349" hits="0" branch="false"/>
-                <line number="353" hits="0" branch="false"/>
-                <line number="354" hits="0" branch="false"/>
-                <line number="356" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="translate" signature="(Ljava/lang/String;)Ljava/lang/String;" line-rate="0.0"
-                    branch-rate="0.0">
-              <lines>
-                <line number="368" hits="0" branch="false"/>
-                <line number="369" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="370" hits="0" branch="false"/>
-                <line number="372" hits="0" branch="false"/>
-                <line number="373" hits="0" branch="false"/>
-                <line number="374" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="99" hits="0" branch="false"/>
-            <line number="150" hits="0" branch="false"/>
-            <line number="151" hits="0" branch="false"/>
-            <line number="152" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="153" hits="0" branch="false"/>
-            <line number="155" hits="0" branch="false"/>
-            <line number="157" hits="0" branch="false"/>
-            <line number="169" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="170" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="171" hits="0" branch="false"/>
-            <line number="173" hits="0" branch="false"/>
-            <line number="176" hits="0" branch="false"/>
-            <line number="177" hits="0" branch="false"/>
-            <line number="179" hits="0" branch="false"/>
-            <line number="180" hits="0" branch="false"/>
-            <line number="183" hits="0" branch="false"/>
-            <line number="184" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="185" hits="0" branch="false"/>
-            <line number="186" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="187" hits="0" branch="false"/>
-            <line number="192" hits="0" branch="false"/>
-            <line number="193" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="195" hits="0" branch="false"/>
-            <line number="197" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="198" hits="0" branch="false"/>
-            <line number="200" hits="0" branch="false"/>
-            <line number="201" hits="0" branch="false"/>
-            <line number="202" hits="0" branch="false"/>
-            <line number="203" hits="0" branch="false"/>
-            <line number="206" hits="0" branch="false"/>
-            <line number="210" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="211" hits="0" branch="false"/>
-            <line number="212" hits="0" branch="false"/>
-            <line number="214" hits="0" branch="false"/>
-            <line number="217" hits="0" branch="false"/>
-            <line number="218" hits="0" branch="false"/>
-            <line number="220" hits="0" branch="false"/>
-            <line number="225" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="226" hits="0" branch="false"/>
-            <line number="229" hits="0" branch="false"/>
-            <line number="245" hits="0" branch="false"/>
-            <line number="246" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="247" hits="0" branch="false"/>
-            <line number="249" hits="0" branch="false"/>
-            <line number="250" hits="0" branch="false"/>
-            <line number="251" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="253" hits="0" branch="false"/>
-            <line number="254" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="255" hits="0" branch="false"/>
-            <line number="257" hits="0" branch="false"/>
-            <line number="259" hits="0" branch="false"/>
-            <line number="260" hits="0" branch="false"/>
-            <line number="263" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="264" hits="0" branch="false"/>
-            <line number="266" hits="0" branch="false"/>
-            <line number="268" hits="0" branch="false"/>
-            <line number="269" hits="0" branch="false"/>
-            <line number="271" hits="0" branch="false"/>
-            <line number="272" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="273" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="274" hits="0" branch="false"/>
-            <line number="276" hits="0" branch="false"/>
-            <line number="278" hits="0" branch="false"/>
-            <line number="280" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="281" hits="0" branch="false"/>
-            <line number="283" hits="0" branch="false"/>
-            <line number="284" hits="0" branch="false"/>
-            <line number="285" hits="0" branch="false"/>
-            <line number="289" hits="0" branch="false"/>
-            <line number="290" hits="0" branch="false"/>
-            <line number="292" hits="0" branch="false"/>
-            <line number="309" hits="0" branch="false"/>
-            <line number="310" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="311" hits="0" branch="false"/>
-            <line number="313" hits="0" branch="false"/>
-            <line number="314" hits="0" branch="false"/>
-            <line number="315" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="317" hits="0" branch="false"/>
-            <line number="318" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="319" hits="0" branch="false"/>
-            <line number="321" hits="0" branch="false"/>
-            <line number="323" hits="0" branch="false"/>
-            <line number="324" hits="0" branch="false"/>
-            <line number="327" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="328" hits="0" branch="false"/>
-            <line number="330" hits="0" branch="false"/>
-            <line number="332" hits="0" branch="false"/>
-            <line number="333" hits="0" branch="false"/>
-            <line number="335" hits="0" branch="false"/>
-            <line number="336" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="337" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="338" hits="0" branch="false"/>
-            <line number="340" hits="0" branch="false"/>
-            <line number="342" hits="0" branch="false"/>
-            <line number="344" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="345" hits="0" branch="false"/>
-            <line number="347" hits="0" branch="false"/>
-            <line number="348" hits="0" branch="false"/>
-            <line number="349" hits="0" branch="false"/>
-            <line number="353" hits="0" branch="false"/>
-            <line number="354" hits="0" branch="false"/>
-            <line number="356" hits="0" branch="false"/>
-            <line number="368" hits="0" branch="false"/>
-            <line number="369" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="370" hits="0" branch="false"/>
-            <line number="372" hits="0" branch="false"/>
-            <line number="373" hits="0" branch="false"/>
-            <line number="374" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.ChainResources"
-               filename="org/apache/commons/chain/web/ChainResources.java" line-rate="0.1744186046511628"
-               branch-rate="0.17857142857142858" complexity="8.6">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="39" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="class$" signature="(Ljava/lang/String;)Ljava/lang/Class;" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="57" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="getResourcePaths" signature="(Ljava/lang/String;)[Ljava/lang/String;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="227" hits="30" branch="false"/>
-                <line number="229" hits="30" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="233" hits="87" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="234" hits="60" branch="false"/>
-                <line number="235" hits="60" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="236" hits="39" branch="false"/>
-                <line number="238" hits="60" branch="false"/>
-                <line number="240" hits="27" branch="false"/>
-                <line number="241" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="242" hits="15" branch="false"/>
-                <line number="246" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="parseClassResources"
-                    signature="(Ljava/lang/String;Lorg/apache/commons/chain/config/ConfigParser;)V"
-                    line-rate="0.10526315789473684" branch-rate="0.08333333333333333">
-              <lines>
-                <line number="54" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="55" hits="3" branch="false"/>
-                <line number="58" hits="0" branch="false"/>
-                <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="61" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="63" hits="0" branch="false"/>
-                <line number="64" hits="0" branch="false"/>
-                <line number="66" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="67" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-                <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="70" hits="0" branch="false"/>
-                <line number="73" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="74" hits="0" branch="false"/>
-                <line number="76" hits="0" branch="false"/>
-                <line number="78" hits="0" branch="false"/>
-                <line number="79" hits="0" branch="false"/>
-                <line number="82" hits="0" branch="false"/>
-                <line number="84" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="parseClassResources"
-                    signature="(Lorg/apache/commons/chain/Catalog;Ljava/lang/String;Lorg/apache/commons/chain/config/ConfigParser;)V"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="101" hits="0" branch="false"/>
-                <line number="103" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="104" hits="0" branch="false"/>
-                <line number="106" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="109" hits="0" branch="false"/>
-                <line number="110" hits="0" branch="false"/>
-                <line number="112" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="113" hits="0" branch="false"/>
-                <line number="114" hits="0" branch="false"/>
-                <line number="115" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="116" hits="0" branch="false"/>
-                <line number="119" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="120" hits="0" branch="false"/>
-                <line number="122" hits="0" branch="false"/>
-                <line number="124" hits="0" branch="false"/>
-                <line number="125" hits="0" branch="false"/>
-                <line number="128" hits="0" branch="false"/>
-                <line number="130" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="parseWebResources"
-                    signature="(Ljavax/servlet/ServletContext;Ljava/lang/String;Lorg/apache/commons/chain/config/ConfigParser;)V"
-                    line-rate="0.11764705882352941" branch-rate="0.1">
-              <lines>
-                <line number="144" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="145" hits="3" branch="false"/>
-                <line number="147" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="148" hits="0" branch="false"/>
-                <line number="149" hits="0" branch="false"/>
-                <line number="151" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="0" branch="false"/>
-                <line number="154" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="155" hits="0" branch="false"/>
-                <line number="158" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="159" hits="0" branch="false"/>
-                <line number="161" hits="0" branch="false"/>
-                <line number="163" hits="0" branch="false"/>
-                <line number="164" hits="0" branch="false"/>
-                <line number="167" hits="0" branch="false"/>
-                <line number="169" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="parseWebResources"
-                    signature="(Lorg/apache/commons/chain/Catalog;Ljavax/servlet/ServletContext;Ljava/lang/String;Lorg/apache/commons/chain/config/ConfigParser;)V"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="187" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="188" hits="0" branch="false"/>
-                <line number="190" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="191" hits="0" branch="false"/>
-                <line number="192" hits="0" branch="false"/>
-                <line number="194" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="195" hits="0" branch="false"/>
-                <line number="196" hits="0" branch="false"/>
-                <line number="197" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="198" hits="0" branch="false"/>
-                <line number="201" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="202" hits="0" branch="false"/>
-                <line number="204" hits="0" branch="false"/>
-                <line number="206" hits="0" branch="false"/>
-                <line number="207" hits="0" branch="false"/>
-                <line number="210" hits="0" branch="false"/>
-                <line number="212" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="39" hits="0" branch="false"/>
-            <line number="54" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="55" hits="3" branch="false"/>
-            <line number="57" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="58" hits="0" branch="false"/>
-            <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="61" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="63" hits="0" branch="false"/>
-            <line number="64" hits="0" branch="false"/>
-            <line number="66" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="67" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="70" hits="0" branch="false"/>
-            <line number="73" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="74" hits="0" branch="false"/>
-            <line number="76" hits="0" branch="false"/>
-            <line number="78" hits="0" branch="false"/>
-            <line number="79" hits="0" branch="false"/>
-            <line number="82" hits="0" branch="false"/>
-            <line number="84" hits="0" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="101" hits="0" branch="false"/>
-            <line number="103" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="104" hits="0" branch="false"/>
-            <line number="106" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="109" hits="0" branch="false"/>
-            <line number="110" hits="0" branch="false"/>
-            <line number="112" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="113" hits="0" branch="false"/>
-            <line number="114" hits="0" branch="false"/>
-            <line number="115" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="116" hits="0" branch="false"/>
-            <line number="119" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="120" hits="0" branch="false"/>
-            <line number="122" hits="0" branch="false"/>
-            <line number="124" hits="0" branch="false"/>
-            <line number="125" hits="0" branch="false"/>
-            <line number="128" hits="0" branch="false"/>
-            <line number="130" hits="0" branch="false"/>
-            <line number="144" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="145" hits="3" branch="false"/>
-            <line number="147" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="148" hits="0" branch="false"/>
-            <line number="149" hits="0" branch="false"/>
-            <line number="151" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="0" branch="false"/>
-            <line number="154" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="155" hits="0" branch="false"/>
-            <line number="158" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="159" hits="0" branch="false"/>
-            <line number="161" hits="0" branch="false"/>
-            <line number="163" hits="0" branch="false"/>
-            <line number="164" hits="0" branch="false"/>
-            <line number="167" hits="0" branch="false"/>
-            <line number="169" hits="0" branch="false"/>
-            <line number="187" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="188" hits="0" branch="false"/>
-            <line number="190" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="191" hits="0" branch="false"/>
-            <line number="192" hits="0" branch="false"/>
-            <line number="194" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="195" hits="0" branch="false"/>
-            <line number="196" hits="0" branch="false"/>
-            <line number="197" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="198" hits="0" branch="false"/>
-            <line number="201" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="202" hits="0" branch="false"/>
-            <line number="204" hits="0" branch="false"/>
-            <line number="206" hits="0" branch="false"/>
-            <line number="207" hits="0" branch="false"/>
-            <line number="210" hits="0" branch="false"/>
-            <line number="212" hits="0" branch="false"/>
-            <line number="227" hits="30" branch="false"/>
-            <line number="229" hits="30" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="233" hits="87" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="234" hits="60" branch="false"/>
-            <line number="235" hits="60" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="236" hits="39" branch="false"/>
-            <line number="238" hits="60" branch="false"/>
-            <line number="240" hits="27" branch="false"/>
-            <line number="241" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="242" hits="15" branch="false"/>
-            <line number="246" hits="30" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.ChainServlet"
-               filename="org/apache/commons/chain/web/ChainServlet.java" line-rate="0.4634146341463415"
-               branch-rate="0.3333333333333333" complexity="4.333333333333333">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="96" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="class$" signature="(Ljava/lang/String;)Ljava/lang/Class;" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="163" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="destroy" signature="()V" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="144" hits="0" branch="false"/>
-                <line number="145" hits="0" branch="false"/>
-                <line number="146" hits="0" branch="false"/>
-                <line number="147" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="148" hits="0" branch="false"/>
-                <line number="150" hits="0" branch="false"/>
-                <line number="152" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="init" signature="()V" line-rate="0.5483870967741935" branch-rate="0.35714285714285715">
-              <lines>
-                <line number="164" hits="3" branch="false"/>
-                <line number="165" hits="3" branch="false"/>
-                <line number="166" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="167" hits="3" branch="false"/>
-                <line number="172" hits="3" branch="false"/>
-                <line number="173" hits="3" branch="false"/>
-                <line number="175" hits="3" branch="false"/>
-                <line number="176" hits="3" branch="false"/>
-                <line number="179" hits="3" branch="false"/>
-                <line number="180" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="181" hits="0" branch="false"/>
-                <line number="182" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="183" hits="0" branch="false"/>
-                <line number="188" hits="3" branch="false"/>
-                <line number="189" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="191" hits="0" branch="false"/>
-                <line number="193" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="194" hits="0" branch="false"/>
-                <line number="196" hits="0" branch="false"/>
-                <line number="197" hits="0" branch="false"/>
-                <line number="198" hits="0" branch="false"/>
-                <line number="199" hits="0" branch="false"/>
-                <line number="201" hits="0" branch="false"/>
-                <line number="205" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="206" hits="3" branch="false"/>
-                <line number="208" hits="3" branch="false"/>
-                <line number="211" hits="0" branch="false"/>
-                <line number="213" hits="0" branch="false"/>
-                <line number="218" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="219" hits="0" branch="false"/>
-                <line number="222" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="service"
-                    signature="(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V"
-                    line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="241" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="96" hits="3" branch="false"/>
-            <line number="144" hits="0" branch="false"/>
-            <line number="145" hits="0" branch="false"/>
-            <line number="146" hits="0" branch="false"/>
-            <line number="147" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="148" hits="0" branch="false"/>
-            <line number="150" hits="0" branch="false"/>
-            <line number="152" hits="0" branch="false"/>
-            <line number="163" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="164" hits="3" branch="false"/>
-            <line number="165" hits="3" branch="false"/>
-            <line number="166" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="167" hits="3" branch="false"/>
-            <line number="172" hits="3" branch="false"/>
-            <line number="173" hits="3" branch="false"/>
-            <line number="175" hits="3" branch="false"/>
-            <line number="176" hits="3" branch="false"/>
-            <line number="179" hits="3" branch="false"/>
-            <line number="180" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="181" hits="0" branch="false"/>
-            <line number="182" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="183" hits="0" branch="false"/>
-            <line number="188" hits="3" branch="false"/>
-            <line number="189" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="191" hits="0" branch="false"/>
-            <line number="193" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="194" hits="0" branch="false"/>
-            <line number="196" hits="0" branch="false"/>
-            <line number="197" hits="0" branch="false"/>
-            <line number="198" hits="0" branch="false"/>
-            <line number="199" hits="0" branch="false"/>
-            <line number="201" hits="0" branch="false"/>
-            <line number="205" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="206" hits="3" branch="false"/>
-            <line number="208" hits="3" branch="false"/>
-            <line number="211" hits="0" branch="false"/>
-            <line number="213" hits="0" branch="false"/>
-            <line number="218" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="219" hits="0" branch="false"/>
-            <line number="222" hits="3" branch="false"/>
-            <line number="241" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.MapEntry" filename="org/apache/commons/chain/web/MapEntry.java"
-               line-rate="0.9444444444444444" branch-rate="0.36363636363636365" complexity="2.8333333333333335">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljava/lang/Object;Ljava/lang/Object;Z)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="46" hits="474" branch="false"/>
-                <line number="56" hits="474" branch="false"/>
-                <line number="57" hits="474" branch="false"/>
-                <line number="58" hits="474" branch="false"/>
-                <line number="59" hits="474" branch="false"/>
-                <line number="60" hits="474" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.75" branch-rate="0.25">
-              <lines>
-                <line number="108" hits="84" branch="true" condition-coverage="50% (2/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="109" hits="84" branch="false"/>
-                <line number="110" hits="84" branch="true" condition-coverage="16% (2/12)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="0%"/>
-                    <condition number="2" type="jump" coverage="50%"/>
-                    <condition number="3" type="jump" coverage="0%"/>
-                    <condition number="4" type="jump" coverage="0%"/>
-                    <condition number="5" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="115" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getKey" signature="()Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="69" hits="1200" branch="false"/>
-              </lines>
-            </method>
-            <method name="getValue" signature="()Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="79" hits="948" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="125" hits="474" branch="true" condition-coverage="50% (2/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="setValue" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="91" hits="54" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="92" hits="36" branch="false"/>
-                <line number="93" hits="36" branch="false"/>
-                <line number="94" hits="36" branch="false"/>
-                <line number="96" hits="18" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="46" hits="474" branch="false"/>
-            <line number="56" hits="474" branch="false"/>
-            <line number="57" hits="474" branch="false"/>
-            <line number="58" hits="474" branch="false"/>
-            <line number="59" hits="474" branch="false"/>
-            <line number="60" hits="474" branch="false"/>
-            <line number="69" hits="1200" branch="false"/>
-            <line number="79" hits="948" branch="false"/>
-            <line number="91" hits="54" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="92" hits="36" branch="false"/>
-            <line number="93" hits="36" branch="false"/>
-            <line number="94" hits="36" branch="false"/>
-            <line number="96" hits="18" branch="false"/>
-            <line number="108" hits="84" branch="true" condition-coverage="50% (2/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="109" hits="84" branch="false"/>
-            <line number="110" hits="84" branch="true" condition-coverage="16% (2/12)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="0%"/>
-                <condition number="2" type="jump" coverage="50%"/>
-                <condition number="3" type="jump" coverage="0%"/>
-                <condition number="4" type="jump" coverage="0%"/>
-                <condition number="5" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="115" hits="0" branch="false"/>
-            <line number="125" hits="474" branch="true" condition-coverage="50% (2/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.WebContext" filename="org/apache/commons/chain/web/WebContext.java"
-               line-rate="1.0" branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="42" hits="240" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="42" hits="240" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.web.faces" line-rate="0.0" branch-rate="1.0" complexity="1.0">
-      <classes>
-        <class name="org.apache.commons.chain.web.faces.FacesGetLocaleCommand"
-               filename="org/apache/commons/chain/web/faces/FacesGetLocaleCommand.java" line-rate="0.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getLocale" signature="(Lorg/apache/commons/chain/Context;)Ljava/util/Locale;" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="45" hits="0" branch="false"/>
-                <line number="47" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="0" branch="false"/>
-            <line number="45" hits="0" branch="false"/>
-            <line number="47" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.faces.FacesSetLocaleCommand"
-               filename="org/apache/commons/chain/web/faces/FacesSetLocaleCommand.java" line-rate="0.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setLocale" signature="(Lorg/apache/commons/chain/Context;Ljava/util/Locale;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="45" hits="0" branch="false"/>
-                <line number="47" hits="0" branch="false"/>
-                <line number="49" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="0" branch="false"/>
-            <line number="45" hits="0" branch="false"/>
-            <line number="47" hits="0" branch="false"/>
-            <line number="49" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.faces.FacesWebContext"
-               filename="org/apache/commons/chain/web/faces/FacesWebContext.java" line-rate="0.0" branch-rate="1.0"
-               complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="44" hits="0" branch="false"/>
-                <line number="45" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;" signature="(Ljavax/faces/context/FacesContext;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="54" hits="0" branch="false"/>
-                <line number="56" hits="0" branch="false"/>
-                <line number="58" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getApplicationScope" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="124" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getContext" signature="()Ljavax/faces/context/FacesContext;" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="82" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCookies" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="197" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getHeader" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="136" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getHeaderValues" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="148" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getInitParam" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="160" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParam" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="172" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParamValues" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="184" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getRequestScope" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="209" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getSessionScope" signature="()Ljava/util/Map;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="221" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="initialize" signature="(Ljavax/faces/context/FacesContext;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="95" hits="0" branch="false"/>
-                <line number="97" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="release" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="108" hits="0" branch="false"/>
-                <line number="110" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="44" hits="0" branch="false"/>
-            <line number="45" hits="0" branch="false"/>
-            <line number="54" hits="0" branch="false"/>
-            <line number="56" hits="0" branch="false"/>
-            <line number="58" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="82" hits="0" branch="false"/>
-            <line number="95" hits="0" branch="false"/>
-            <line number="97" hits="0" branch="false"/>
-            <line number="108" hits="0" branch="false"/>
-            <line number="110" hits="0" branch="false"/>
-            <line number="124" hits="0" branch="false"/>
-            <line number="136" hits="0" branch="false"/>
-            <line number="148" hits="0" branch="false"/>
-            <line number="160" hits="0" branch="false"/>
-            <line number="172" hits="0" branch="false"/>
-            <line number="184" hits="0" branch="false"/>
-            <line number="197" hits="0" branch="false"/>
-            <line number="209" hits="0" branch="false"/>
-            <line number="221" hits="0" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.web.portlet" line-rate="0.8608490566037735" branch-rate="0.7259615384615384"
-             complexity="2.1826086956521737">
-      <classes>
-        <class name="org.apache.commons.chain.web.portlet.PortletApplicationScopeMap"
-               filename="org/apache/commons/chain/web/portlet/PortletApplicationScopeMap.java"
-               line-rate="0.7846153846153846" branch-rate="0.5714285714285714" complexity="2.0625">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/portlet/PortletContext;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-                <line number="53" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="54" hits="12" branch="false"/>
-                <line number="56" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-                <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="70" hits="0" branch="false"/>
-                <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="72" hits="0" branch="false"/>
-                <line number="74" hits="0" branch="false"/>
-                <line number="75" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="80" hits="27" branch="false"/>
-                <line number="81" hits="27" branch="false"/>
-                <line number="83" hits="105" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="84" hits="78" branch="false"/>
-                <line number="85" hits="78" branch="false"/>
-                <line number="87" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="92" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="97" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="102" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="171" hits="42" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="172" hits="0" branch="false"/>
-                <line number="173" hits="42" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="174" hits="39" branch="false"/>
-                <line number="176" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="112" hits="27" branch="false"/>
-                <line number="113" hits="27" branch="false"/>
-                <line number="114" hits="105" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="115" hits="78" branch="false"/>
-                <line number="117" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
-                    line-rate="0.8333333333333334" branch-rate="0.5">
-              <lines>
-                <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="123" hits="0" branch="false"/>
-                <line number="125" hits="12" branch="false"/>
-                <line number="126" hits="12" branch="false"/>
-                <line number="127" hits="12" branch="false"/>
-                <line number="128" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="133" hits="3" branch="false"/>
-                <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="135" hits="6" branch="false"/>
-                <line number="136" hits="6" branch="false"/>
-                <line number="137" hits="6" branch="false"/>
-                <line number="138" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="142" hits="3" branch="false"/>
-                <line number="143" hits="3" branch="false"/>
-                <line number="144" hits="3" branch="false"/>
-                <line number="145" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="150" hits="33" branch="false"/>
-                <line number="151" hits="33" branch="false"/>
-                <line number="152" hits="135" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="153" hits="102" branch="false"/>
-                <line number="154" hits="102" branch="false"/>
-                <line number="156" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="161" hits="24" branch="false"/>
-                <line number="162" hits="24" branch="false"/>
-                <line number="163" hits="90" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="164" hits="66" branch="false"/>
-                <line number="166" hits="24" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="53" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="54" hits="12" branch="false"/>
-            <line number="56" hits="3" branch="false"/>
-            <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="70" hits="0" branch="false"/>
-            <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="72" hits="0" branch="false"/>
-            <line number="74" hits="0" branch="false"/>
-            <line number="75" hits="0" branch="false"/>
-            <line number="80" hits="27" branch="false"/>
-            <line number="81" hits="27" branch="false"/>
-            <line number="83" hits="105" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="84" hits="78" branch="false"/>
-            <line number="85" hits="78" branch="false"/>
-            <line number="87" hits="27" branch="false"/>
-            <line number="92" hits="0" branch="false"/>
-            <line number="97" hits="27" branch="false"/>
-            <line number="102" hits="24" branch="false"/>
-            <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="112" hits="27" branch="false"/>
-            <line number="113" hits="27" branch="false"/>
-            <line number="114" hits="105" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="115" hits="78" branch="false"/>
-            <line number="117" hits="27" branch="false"/>
-            <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="123" hits="0" branch="false"/>
-            <line number="125" hits="12" branch="false"/>
-            <line number="126" hits="12" branch="false"/>
-            <line number="127" hits="12" branch="false"/>
-            <line number="128" hits="12" branch="false"/>
-            <line number="133" hits="3" branch="false"/>
-            <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="135" hits="6" branch="false"/>
-            <line number="136" hits="6" branch="false"/>
-            <line number="137" hits="6" branch="false"/>
-            <line number="138" hits="3" branch="false"/>
-            <line number="142" hits="3" branch="false"/>
-            <line number="143" hits="3" branch="false"/>
-            <line number="144" hits="3" branch="false"/>
-            <line number="145" hits="3" branch="false"/>
-            <line number="150" hits="33" branch="false"/>
-            <line number="151" hits="33" branch="false"/>
-            <line number="152" hits="135" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="153" hits="102" branch="false"/>
-            <line number="154" hits="102" branch="false"/>
-            <line number="156" hits="33" branch="false"/>
-            <line number="161" hits="24" branch="false"/>
-            <line number="162" hits="24" branch="false"/>
-            <line number="163" hits="90" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="164" hits="66" branch="false"/>
-            <line number="166" hits="24" branch="false"/>
-            <line number="171" hits="42" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="172" hits="0" branch="false"/>
-            <line number="173" hits="42" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="174" hits="39" branch="false"/>
-            <line number="176" hits="3" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletGetLocaleCommand"
-               filename="org/apache/commons/chain/web/portlet/PortletGetLocaleCommand.java" line-rate="1.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="getLocale" signature="(Lorg/apache/commons/chain/Context;)Ljava/util/Locale;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="45" hits="6" branch="false"/>
-                <line number="47" hits="6" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="6" branch="false"/>
-            <line number="45" hits="6" branch="false"/>
-            <line number="47" hits="6" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletInitParamMap"
-               filename="org/apache/commons/chain/web/portlet/PortletInitParamMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/portlet/PortletContext;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="9" branch="false"/>
-                <line number="63" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="9" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="6" branch="false"/>
-                <line number="74" hits="6" branch="false"/>
-                <line number="76" hits="24" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="18" branch="false"/>
-                <line number="78" hits="18" branch="false"/>
-                <line number="80" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="18" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="9" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="9" branch="false"/>
-                <line number="131" hits="9" branch="false"/>
-                <line number="132" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="27" branch="false"/>
-                <line number="134" hits="27" branch="false"/>
-                <line number="136" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="12" branch="false"/>
-                <line number="142" hits="12" branch="false"/>
-                <line number="143" hits="48" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="36" branch="false"/>
-                <line number="146" hits="12" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="9" branch="false"/>
-            <line number="63" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="9" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="6" branch="false"/>
-            <line number="74" hits="6" branch="false"/>
-            <line number="76" hits="24" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="18" branch="false"/>
-            <line number="78" hits="18" branch="false"/>
-            <line number="80" hits="6" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="9" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="9" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="9" branch="false"/>
-            <line number="131" hits="9" branch="false"/>
-            <line number="132" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="27" branch="false"/>
-            <line number="134" hits="27" branch="false"/>
-            <line number="136" hits="9" branch="false"/>
-            <line number="141" hits="12" branch="false"/>
-            <line number="142" hits="12" branch="false"/>
-            <line number="143" hits="48" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="36" branch="false"/>
-            <line number="146" hits="12" branch="false"/>
-            <line number="151" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="18" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletParamMap"
-               filename="org/apache/commons/chain/web/portlet/PortletParamMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/portlet/PortletRequest;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="6" branch="false"/>
-                <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="6" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="6" branch="false"/>
-                <line number="74" hits="6" branch="false"/>
-                <line number="76" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="12" branch="false"/>
-                <line number="78" hits="12" branch="false"/>
-                <line number="80" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="12" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="6" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="9" branch="false"/>
-                <line number="131" hits="9" branch="false"/>
-                <line number="132" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="18" branch="false"/>
-                <line number="134" hits="18" branch="false"/>
-                <line number="136" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="9" branch="false"/>
-                <line number="142" hits="9" branch="false"/>
-                <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="18" branch="false"/>
-                <line number="146" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="6" branch="false"/>
-            <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="6" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="6" branch="false"/>
-            <line number="74" hits="6" branch="false"/>
-            <line number="76" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="12" branch="false"/>
-            <line number="78" hits="12" branch="false"/>
-            <line number="80" hits="6" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="6" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="6" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="9" branch="false"/>
-            <line number="131" hits="9" branch="false"/>
-            <line number="132" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="18" branch="false"/>
-            <line number="134" hits="18" branch="false"/>
-            <line number="136" hits="9" branch="false"/>
-            <line number="141" hits="9" branch="false"/>
-            <line number="142" hits="9" branch="false"/>
-            <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="18" branch="false"/>
-            <line number="146" hits="9" branch="false"/>
-            <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="12" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletParamValuesMap"
-               filename="org/apache/commons/chain/web/portlet/PortletParamValuesMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/portlet/PortletRequest;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="6" branch="false"/>
-                <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="6" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="3" branch="false"/>
-                <line number="74" hits="3" branch="false"/>
-                <line number="76" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="6" branch="false"/>
-                <line number="78" hits="6" branch="false"/>
-                <line number="80" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="12" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="6" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="3" branch="false"/>
-                <line number="131" hits="3" branch="false"/>
-                <line number="132" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="6" branch="false"/>
-                <line number="134" hits="6" branch="false"/>
-                <line number="136" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="9" branch="false"/>
-                <line number="142" hits="9" branch="false"/>
-                <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="18" branch="false"/>
-                <line number="146" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="6" branch="false"/>
-            <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="6" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="3" branch="false"/>
-            <line number="74" hits="3" branch="false"/>
-            <line number="76" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="6" branch="false"/>
-            <line number="78" hits="6" branch="false"/>
-            <line number="80" hits="3" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="6" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="6" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="3" branch="false"/>
-            <line number="131" hits="3" branch="false"/>
-            <line number="132" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="6" branch="false"/>
-            <line number="134" hits="6" branch="false"/>
-            <line number="136" hits="3" branch="false"/>
-            <line number="141" hits="9" branch="false"/>
-            <line number="142" hits="9" branch="false"/>
-            <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="18" branch="false"/>
-            <line number="146" hits="9" branch="false"/>
-            <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="12" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletRequestScopeMap"
-               filename="org/apache/commons/chain/web/portlet/PortletRequestScopeMap.java"
-               line-rate="0.7846153846153846" branch-rate="0.5714285714285714" complexity="2.0625">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/portlet/PortletRequest;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-                <line number="53" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="54" hits="6" branch="false"/>
-                <line number="56" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-                <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="70" hits="0" branch="false"/>
-                <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="72" hits="0" branch="false"/>
-                <line number="74" hits="0" branch="false"/>
-                <line number="75" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="80" hits="30" branch="false"/>
-                <line number="81" hits="30" branch="false"/>
-                <line number="83" hits="72" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="84" hits="42" branch="false"/>
-                <line number="85" hits="42" branch="false"/>
-                <line number="87" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="92" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="97" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="102" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="171" hits="36" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="172" hits="0" branch="false"/>
-                <line number="173" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="174" hits="33" branch="false"/>
-                <line number="176" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="112" hits="30" branch="false"/>
-                <line number="113" hits="30" branch="false"/>
-                <line number="114" hits="72" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="115" hits="42" branch="false"/>
-                <line number="117" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
-                    line-rate="0.8333333333333334" branch-rate="0.5">
-              <lines>
-                <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="123" hits="0" branch="false"/>
-                <line number="125" hits="12" branch="false"/>
-                <line number="126" hits="12" branch="false"/>
-                <line number="127" hits="12" branch="false"/>
-                <line number="128" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="133" hits="3" branch="false"/>
-                <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="135" hits="6" branch="false"/>
-                <line number="136" hits="6" branch="false"/>
-                <line number="137" hits="6" branch="false"/>
-                <line number="138" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="142" hits="3" branch="false"/>
-                <line number="143" hits="3" branch="false"/>
-                <line number="144" hits="3" branch="false"/>
-                <line number="145" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="150" hits="33" branch="false"/>
-                <line number="151" hits="33" branch="false"/>
-                <line number="152" hits="81" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="153" hits="48" branch="false"/>
-                <line number="154" hits="48" branch="false"/>
-                <line number="156" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="161" hits="27" branch="false"/>
-                <line number="162" hits="27" branch="false"/>
-                <line number="163" hits="63" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="164" hits="36" branch="false"/>
-                <line number="166" hits="27" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="53" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="54" hits="6" branch="false"/>
-            <line number="56" hits="3" branch="false"/>
-            <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="70" hits="0" branch="false"/>
-            <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="72" hits="0" branch="false"/>
-            <line number="74" hits="0" branch="false"/>
-            <line number="75" hits="0" branch="false"/>
-            <line number="80" hits="30" branch="false"/>
-            <line number="81" hits="30" branch="false"/>
-            <line number="83" hits="72" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="84" hits="42" branch="false"/>
-            <line number="85" hits="42" branch="false"/>
-            <line number="87" hits="30" branch="false"/>
-            <line number="92" hits="0" branch="false"/>
-            <line number="97" hits="21" branch="false"/>
-            <line number="102" hits="24" branch="false"/>
-            <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="112" hits="30" branch="false"/>
-            <line number="113" hits="30" branch="false"/>
-            <line number="114" hits="72" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="115" hits="42" branch="false"/>
-            <line number="117" hits="30" branch="false"/>
-            <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="123" hits="0" branch="false"/>
-            <line number="125" hits="12" branch="false"/>
-            <line number="126" hits="12" branch="false"/>
-            <line number="127" hits="12" branch="false"/>
-            <line number="128" hits="12" branch="false"/>
-            <line number="133" hits="3" branch="false"/>
-            <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="135" hits="6" branch="false"/>
-            <line number="136" hits="6" branch="false"/>
-            <line number="137" hits="6" branch="false"/>
-            <line number="138" hits="3" branch="false"/>
-            <line number="142" hits="3" branch="false"/>
-            <line number="143" hits="3" branch="false"/>
-            <line number="144" hits="3" branch="false"/>
-            <line number="145" hits="3" branch="false"/>
-            <line number="150" hits="33" branch="false"/>
-            <line number="151" hits="33" branch="false"/>
-            <line number="152" hits="81" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="153" hits="48" branch="false"/>
-            <line number="154" hits="48" branch="false"/>
-            <line number="156" hits="33" branch="false"/>
-            <line number="161" hits="27" branch="false"/>
-            <line number="162" hits="27" branch="false"/>
-            <line number="163" hits="63" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="164" hits="36" branch="false"/>
-            <line number="166" hits="27" branch="false"/>
-            <line number="171" hits="36" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="172" hits="0" branch="false"/>
-            <line number="173" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="174" hits="33" branch="false"/>
-            <line number="176" hits="3" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletSessionScopeMap"
-               filename="org/apache/commons/chain/web/portlet/PortletSessionScopeMap.java"
-               line-rate="0.8723404255319149" branch-rate="0.75" complexity="3.411764705882353">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/portlet/PortletRequest;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="44" hits="24" branch="false"/>
-                <line number="45" hits="24" branch="false"/>
-                <line number="46" hits="24" branch="false"/>
-                <line number="47" hits="24" branch="false"/>
-                <line number="50" hits="24" branch="false"/>
-                <line number="51" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="55" hits="6" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="56" hits="3" branch="false"/>
-                <line number="57" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="58" hits="9" branch="false"/>
-                <line number="61" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="0.6666666666666666"
-                    branch-rate="0.25">
-              <lines>
-                <line number="65" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="68" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.2222222222222222"
-                    branch-rate="0.25">
-              <lines>
-                <line number="74" hits="3" branch="true" condition-coverage="50% (2/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="75" hits="3" branch="false"/>
-                <line number="77" hits="0" branch="false"/>
-                <line number="79" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="80" hits="0" branch="false"/>
-                <line number="81" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="82" hits="0" branch="false"/>
-                <line number="84" hits="0" branch="false"/>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="33" branch="false"/>
-                <line number="91" hits="33" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="92" hits="30" branch="false"/>
-                <line number="95" hits="96" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="96" hits="66" branch="false"/>
-                <line number="97" hits="66" branch="false"/>
-                <line number="100" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.6666666666666666" branch-rate="0.5">
-              <lines>
-                <line number="105" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="106" hits="0" branch="false"/>
-                <line number="108" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="114" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="115" hits="24" branch="false"/>
-                <line number="117" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="123" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="124" hits="24" branch="false"/>
-                <line number="126" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.6666666666666666" branch-rate="0.25">
-              <lines>
-                <line number="132" hits="3" branch="true" condition-coverage="25% (1/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="134" hits="0" branch="false"/>
-                <line number="136" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="222" hits="42" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="223" hits="0" branch="false"/>
-                <line number="224" hits="42" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="225" hits="39" branch="false"/>
-                <line number="227" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="142" hits="33" branch="false"/>
-                <line number="143" hits="33" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="30" branch="false"/>
-                <line number="146" hits="96" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="147" hits="66" branch="false"/>
-                <line number="150" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
-                    line-rate="0.8888888888888888" branch-rate="0.75">
-              <lines>
-                <line number="155" hits="15" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="156" hits="0" branch="false"/>
-                <line number="161" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="162" hits="3" branch="false"/>
-                <line number="163" hits="3" branch="false"/>
-                <line number="166" hits="15" branch="false"/>
-                <line number="167" hits="15" branch="false"/>
-                <line number="168" hits="15" branch="false"/>
-                <line number="169" hits="15" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="174" hits="6" branch="false"/>
-                <line number="175" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="176" hits="6" branch="false"/>
-                <line number="177" hits="6" branch="false"/>
-                <line number="178" hits="6" branch="false"/>
-                <line number="179" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="183" hits="6" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="184" hits="3" branch="false"/>
-                <line number="185" hits="3" branch="false"/>
-                <line number="186" hits="3" branch="false"/>
-                <line number="187" hits="3" branch="false"/>
-                <line number="189" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="sessionExists" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="232" hits="234" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="233" hits="60" branch="false"/>
-                <line number="234" hits="60" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="235" hits="21" branch="false"/>
-                <line number="238" hits="234" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="239" hits="195" branch="false"/>
-                <line number="241" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="195" hits="36" branch="false"/>
-                <line number="196" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="197" hits="33" branch="false"/>
-                <line number="199" hits="108" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="200" hits="75" branch="false"/>
-                <line number="201" hits="75" branch="false"/>
-                <line number="204" hits="36" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="209" hits="30" branch="false"/>
-                <line number="210" hits="30" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="211" hits="27" branch="false"/>
-                <line number="213" hits="84" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="214" hits="57" branch="false"/>
-                <line number="217" hits="30" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="44" hits="24" branch="false"/>
-            <line number="45" hits="24" branch="false"/>
-            <line number="46" hits="24" branch="false"/>
-            <line number="47" hits="24" branch="false"/>
-            <line number="50" hits="24" branch="false"/>
-            <line number="51" hits="24" branch="false"/>
-            <line number="55" hits="6" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="56" hits="3" branch="false"/>
-            <line number="57" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="58" hits="9" branch="false"/>
-            <line number="61" hits="6" branch="false"/>
-            <line number="65" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="68" hits="3" branch="false"/>
-            <line number="74" hits="3" branch="true" condition-coverage="50% (2/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="75" hits="3" branch="false"/>
-            <line number="77" hits="0" branch="false"/>
-            <line number="79" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="80" hits="0" branch="false"/>
-            <line number="81" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="82" hits="0" branch="false"/>
-            <line number="84" hits="0" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="33" branch="false"/>
-            <line number="91" hits="33" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="92" hits="30" branch="false"/>
-            <line number="95" hits="96" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="96" hits="66" branch="false"/>
-            <line number="97" hits="66" branch="false"/>
-            <line number="100" hits="33" branch="false"/>
-            <line number="105" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="106" hits="0" branch="false"/>
-            <line number="108" hits="3" branch="false"/>
-            <line number="114" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="115" hits="24" branch="false"/>
-            <line number="117" hits="3" branch="false"/>
-            <line number="123" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="124" hits="24" branch="false"/>
-            <line number="126" hits="3" branch="false"/>
-            <line number="132" hits="3" branch="true" condition-coverage="25% (1/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="134" hits="0" branch="false"/>
-            <line number="136" hits="3" branch="false"/>
-            <line number="142" hits="33" branch="false"/>
-            <line number="143" hits="33" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="30" branch="false"/>
-            <line number="146" hits="96" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="147" hits="66" branch="false"/>
-            <line number="150" hits="33" branch="false"/>
-            <line number="155" hits="15" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="156" hits="0" branch="false"/>
-            <line number="161" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="162" hits="3" branch="false"/>
-            <line number="163" hits="3" branch="false"/>
-            <line number="166" hits="15" branch="false"/>
-            <line number="167" hits="15" branch="false"/>
-            <line number="168" hits="15" branch="false"/>
-            <line number="169" hits="15" branch="false"/>
-            <line number="174" hits="6" branch="false"/>
-            <line number="175" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="176" hits="6" branch="false"/>
-            <line number="177" hits="6" branch="false"/>
-            <line number="178" hits="6" branch="false"/>
-            <line number="179" hits="6" branch="false"/>
-            <line number="183" hits="6" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="184" hits="3" branch="false"/>
-            <line number="185" hits="3" branch="false"/>
-            <line number="186" hits="3" branch="false"/>
-            <line number="187" hits="3" branch="false"/>
-            <line number="189" hits="3" branch="false"/>
-            <line number="195" hits="36" branch="false"/>
-            <line number="196" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="197" hits="33" branch="false"/>
-            <line number="199" hits="108" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="200" hits="75" branch="false"/>
-            <line number="201" hits="75" branch="false"/>
-            <line number="204" hits="36" branch="false"/>
-            <line number="209" hits="30" branch="false"/>
-            <line number="210" hits="30" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="211" hits="27" branch="false"/>
-            <line number="213" hits="84" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="214" hits="57" branch="false"/>
-            <line number="217" hits="30" branch="false"/>
-            <line number="222" hits="42" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="223" hits="0" branch="false"/>
-            <line number="224" hits="42" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="225" hits="39" branch="false"/>
-            <line number="227" hits="3" branch="false"/>
-            <line number="232" hits="234" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="233" hits="60" branch="false"/>
-            <line number="234" hits="60" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="235" hits="21" branch="false"/>
-            <line number="238" hits="234" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="239" hits="195" branch="false"/>
-            <line number="241" hits="39" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletSetLocaleCommand"
-               filename="org/apache/commons/chain/web/portlet/PortletSetLocaleCommand.java" line-rate="0.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setLocale" signature="(Lorg/apache/commons/chain/Context;Ljava/util/Locale;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="50" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="0" branch="false"/>
-            <line number="50" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.portlet.PortletWebContext"
-               filename="org/apache/commons/chain/web/portlet/PortletWebContext.java" line-rate="0.9666666666666667"
-               branch-rate="1.0" complexity="2.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="47" hits="0" branch="false"/>
-                <line number="48" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;"
-                    signature="(Ljavax/portlet/PortletContext;Ljavax/portlet/PortletRequest;Ljavax/portlet/PortletResponse;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="61" hits="117" branch="false"/>
-                <line number="63" hits="117" branch="false"/>
-                <line number="65" hits="117" branch="false"/>
-                <line number="75" hits="117" branch="false"/>
-                <line number="81" hits="117" branch="false"/>
-                <line number="88" hits="117" branch="false"/>
-                <line number="95" hits="117" branch="false"/>
-                <line number="102" hits="117" branch="false"/>
-                <line number="109" hits="117" branch="false"/>
-                <line number="116" hits="117" branch="false"/>
-                <line number="122" hits="117" branch="false"/>
-                <line number="129" hits="117" branch="false"/>
-                <line number="135" hits="117" branch="false"/>
-                <line number="142" hits="117" branch="false"/>
-              </lines>
-            </method>
-            <method name="getApplicationScope" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="243" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="244" hits="21" branch="false"/>
-                <line number="246" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getContext" signature="()Ljavax/portlet/PortletContext;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="155" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCookies" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="336" hits="51" branch="false"/>
-              </lines>
-            </method>
-            <method name="getHeader" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="258" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="260" hits="21" branch="false"/>
-                <line number="262" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getHeaderValues" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="274" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="276" hits="21" branch="false"/>
-                <line number="278" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getInitParam" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="290" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="291" hits="21" branch="false"/>
-                <line number="293" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParam" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="305" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="306" hits="21" branch="false"/>
-                <line number="308" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParamValues" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="320" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="321" hits="21" branch="false"/>
-                <line number="323" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getRequest" signature="()Ljavax/portlet/PortletRequest;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="167" hits="93" branch="false"/>
-              </lines>
-            </method>
-            <method name="getRequestScope" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="348" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="349" hits="21" branch="false"/>
-                <line number="351" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getResponse" signature="()Ljavax/portlet/PortletResponse;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="179" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="getSessionScope" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="363" hits="60" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="364" hits="24" branch="false"/>
-                <line number="367" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="initialize"
-                    signature="(Ljavax/portlet/PortletContext;Ljavax/portlet/PortletRequest;Ljavax/portlet/PortletResponse;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="197" hits="117" branch="false"/>
-                <line number="198" hits="117" branch="false"/>
-                <line number="199" hits="117" branch="false"/>
-                <line number="203" hits="117" branch="false"/>
-              </lines>
-            </method>
-            <method name="release" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="215" hits="3" branch="false"/>
-                <line number="216" hits="3" branch="false"/>
-                <line number="217" hits="3" branch="false"/>
-                <line number="218" hits="3" branch="false"/>
-                <line number="219" hits="3" branch="false"/>
-                <line number="220" hits="3" branch="false"/>
-                <line number="221" hits="3" branch="false"/>
-                <line number="222" hits="3" branch="false"/>
-                <line number="225" hits="3" branch="false"/>
-                <line number="226" hits="3" branch="false"/>
-                <line number="227" hits="3" branch="false"/>
-                <line number="229" hits="3" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="47" hits="0" branch="false"/>
-            <line number="48" hits="0" branch="false"/>
-            <line number="61" hits="117" branch="false"/>
-            <line number="63" hits="117" branch="false"/>
-            <line number="65" hits="117" branch="false"/>
-            <line number="75" hits="117" branch="false"/>
-            <line number="81" hits="117" branch="false"/>
-            <line number="88" hits="117" branch="false"/>
-            <line number="95" hits="117" branch="false"/>
-            <line number="102" hits="117" branch="false"/>
-            <line number="109" hits="117" branch="false"/>
-            <line number="116" hits="117" branch="false"/>
-            <line number="122" hits="117" branch="false"/>
-            <line number="129" hits="117" branch="false"/>
-            <line number="135" hits="117" branch="false"/>
-            <line number="142" hits="117" branch="false"/>
-            <line number="155" hits="39" branch="false"/>
-            <line number="167" hits="93" branch="false"/>
-            <line number="179" hits="39" branch="false"/>
-            <line number="197" hits="117" branch="false"/>
-            <line number="198" hits="117" branch="false"/>
-            <line number="199" hits="117" branch="false"/>
-            <line number="203" hits="117" branch="false"/>
-            <line number="215" hits="3" branch="false"/>
-            <line number="216" hits="3" branch="false"/>
-            <line number="217" hits="3" branch="false"/>
-            <line number="218" hits="3" branch="false"/>
-            <line number="219" hits="3" branch="false"/>
-            <line number="220" hits="3" branch="false"/>
-            <line number="221" hits="3" branch="false"/>
-            <line number="222" hits="3" branch="false"/>
-            <line number="225" hits="3" branch="false"/>
-            <line number="226" hits="3" branch="false"/>
-            <line number="227" hits="3" branch="false"/>
-            <line number="229" hits="3" branch="false"/>
-            <line number="243" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="244" hits="21" branch="false"/>
-            <line number="246" hits="57" branch="false"/>
-            <line number="258" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="260" hits="21" branch="false"/>
-            <line number="262" hits="57" branch="false"/>
-            <line number="274" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="276" hits="21" branch="false"/>
-            <line number="278" hits="57" branch="false"/>
-            <line number="290" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="291" hits="21" branch="false"/>
-            <line number="293" hits="57" branch="false"/>
-            <line number="305" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="306" hits="21" branch="false"/>
-            <line number="308" hits="57" branch="false"/>
-            <line number="320" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="321" hits="21" branch="false"/>
-            <line number="323" hits="57" branch="false"/>
-            <line number="336" hits="51" branch="false"/>
-            <line number="348" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="349" hits="21" branch="false"/>
-            <line number="351" hits="57" branch="false"/>
-            <line number="363" hits="60" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="364" hits="24" branch="false"/>
-            <line number="367" hits="60" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-    <package name="org.apache.commons.chain.web.servlet" line-rate="0.7784431137724551" branch-rate="0.6772151898734177"
-             complexity="2.161111111111111">
-      <classes>
-        <class name="org.apache.commons.chain.web.servlet.ChainProcessor"
-               filename="org/apache/commons/chain/web/servlet/ChainProcessor.java" line-rate="0.3548387096774194"
-               branch-rate="0.125" complexity="3.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="57" hits="3" branch="false"/>
-                <line number="104" hits="3" branch="false"/>
-                <line number="112" hits="3" branch="false"/>
-                <line number="119" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="destroy" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="0" branch="false"/>
-                <line number="131" hits="0" branch="false"/>
-                <line number="132" hits="0" branch="false"/>
-                <line number="133" hits="0" branch="false"/>
-                <line number="135" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="init" signature="()V" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="145" hits="3" branch="false"/>
-                <line number="146" hits="3" branch="false"/>
-                <line number="147" hits="3" branch="false"/>
-                <line number="148" hits="3" branch="false"/>
-                <line number="149" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="150" hits="3" branch="false"/>
-                <line number="153" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="service"
-                    signature="(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="171" hits="0" branch="false"/>
-                <line number="173" hits="0" branch="false"/>
-                <line number="174" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="175" hits="0" branch="false"/>
-                <line number="177" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="178" hits="0" branch="false"/>
-                <line number="180" hits="0" branch="false"/>
-                <line number="182" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="183" hits="0" branch="false"/>
-                <line number="185" hits="0" branch="false"/>
-                <line number="187" hits="0" branch="false"/>
-                <line number="188" hits="0" branch="false"/>
-                <line number="189" hits="0" branch="false"/>
-                <line number="190" hits="0" branch="false"/>
-                <line number="192" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="57" hits="3" branch="false"/>
-            <line number="104" hits="3" branch="false"/>
-            <line number="112" hits="3" branch="false"/>
-            <line number="119" hits="3" branch="false"/>
-            <line number="130" hits="0" branch="false"/>
-            <line number="131" hits="0" branch="false"/>
-            <line number="132" hits="0" branch="false"/>
-            <line number="133" hits="0" branch="false"/>
-            <line number="135" hits="0" branch="false"/>
-            <line number="145" hits="3" branch="false"/>
-            <line number="146" hits="3" branch="false"/>
-            <line number="147" hits="3" branch="false"/>
-            <line number="148" hits="3" branch="false"/>
-            <line number="149" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="150" hits="3" branch="false"/>
-            <line number="153" hits="3" branch="false"/>
-            <line number="171" hits="0" branch="false"/>
-            <line number="173" hits="0" branch="false"/>
-            <line number="174" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="175" hits="0" branch="false"/>
-            <line number="177" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="178" hits="0" branch="false"/>
-            <line number="180" hits="0" branch="false"/>
-            <line number="182" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="183" hits="0" branch="false"/>
-            <line number="185" hits="0" branch="false"/>
-            <line number="187" hits="0" branch="false"/>
-            <line number="188" hits="0" branch="false"/>
-            <line number="189" hits="0" branch="false"/>
-            <line number="190" hits="0" branch="false"/>
-            <line number="192" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.PathInfoMapper"
-               filename="org/apache/commons/chain/web/servlet/PathInfoMapper.java" line-rate="0.0" branch-rate="0.0"
-               complexity="1.5">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="39" hits="0" branch="false"/>
-                <line number="45" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalog" signature="(Lorg/apache/commons/chain/Context;)Lorg/apache/commons/chain/Catalog;"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="121" hits="0" branch="false"/>
-                <line number="122" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="123" hits="0" branch="false"/>
-                <line number="125" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="62" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommandName" signature="(Lorg/apache/commons/chain/Context;)Ljava/lang/String;"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="98" hits="0" branch="false"/>
-                <line number="99" hits="0" branch="false"/>
-                <line number="100" hits="0" branch="false"/>
-                <line number="102" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="103" hits="0" branch="false"/>
-                <line number="106" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="78" hits="0" branch="false"/>
-                <line number="80" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="39" hits="0" branch="false"/>
-            <line number="45" hits="0" branch="false"/>
-            <line number="62" hits="0" branch="false"/>
-            <line number="78" hits="0" branch="false"/>
-            <line number="80" hits="0" branch="false"/>
-            <line number="98" hits="0" branch="false"/>
-            <line number="99" hits="0" branch="false"/>
-            <line number="100" hits="0" branch="false"/>
-            <line number="102" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="103" hits="0" branch="false"/>
-            <line number="106" hits="0" branch="false"/>
-            <line number="121" hits="0" branch="false"/>
-            <line number="122" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="123" hits="0" branch="false"/>
-            <line number="125" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.RequestParameterMapper"
-               filename="org/apache/commons/chain/web/servlet/RequestParameterMapper.java" line-rate="0.0"
-               branch-rate="0.0" complexity="1.1666666666666667">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="40" hits="0" branch="false"/>
-                <line number="46" hits="0" branch="false"/>
-                <line number="47" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalog" signature="(Lorg/apache/commons/chain/Context;)Lorg/apache/commons/chain/Catalog;"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="145" hits="0" branch="false"/>
-                <line number="146" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="147" hits="0" branch="false"/>
-                <line number="149" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="61" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommandName" signature="(Lorg/apache/commons/chain/Context;)Ljava/lang/String;"
-                    line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="126" hits="0" branch="false"/>
-                <line number="127" hits="0" branch="false"/>
-                <line number="128" hits="0" branch="false"/>
-                <line number="129" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParameter" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="93" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="77" hits="0" branch="false"/>
-                <line number="79" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setParameter" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="106" hits="0" branch="false"/>
-                <line number="108" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="40" hits="0" branch="false"/>
-            <line number="46" hits="0" branch="false"/>
-            <line number="47" hits="0" branch="false"/>
-            <line number="61" hits="0" branch="false"/>
-            <line number="77" hits="0" branch="false"/>
-            <line number="79" hits="0" branch="false"/>
-            <line number="93" hits="0" branch="false"/>
-            <line number="106" hits="0" branch="false"/>
-            <line number="108" hits="0" branch="false"/>
-            <line number="126" hits="0" branch="false"/>
-            <line number="127" hits="0" branch="false"/>
-            <line number="128" hits="0" branch="false"/>
-            <line number="129" hits="0" branch="false"/>
-            <line number="145" hits="0" branch="false"/>
-            <line number="146" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="147" hits="0" branch="false"/>
-            <line number="149" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletApplicationScopeMap"
-               filename="org/apache/commons/chain/web/servlet/ServletApplicationScopeMap.java"
-               line-rate="0.7846153846153846" branch-rate="0.5714285714285714" complexity="2.0625">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/ServletContext;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-                <line number="53" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="54" hits="12" branch="false"/>
-                <line number="56" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-                <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="70" hits="0" branch="false"/>
-                <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="72" hits="0" branch="false"/>
-                <line number="74" hits="0" branch="false"/>
-                <line number="75" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="80" hits="27" branch="false"/>
-                <line number="81" hits="27" branch="false"/>
-                <line number="83" hits="105" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="84" hits="78" branch="false"/>
-                <line number="85" hits="78" branch="false"/>
-                <line number="87" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="92" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="97" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="102" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="171" hits="42" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="172" hits="0" branch="false"/>
-                <line number="173" hits="42" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="174" hits="39" branch="false"/>
-                <line number="176" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="112" hits="27" branch="false"/>
-                <line number="113" hits="27" branch="false"/>
-                <line number="114" hits="105" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="115" hits="78" branch="false"/>
-                <line number="117" hits="27" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
-                    line-rate="0.8333333333333334" branch-rate="0.5">
-              <lines>
-                <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="123" hits="0" branch="false"/>
-                <line number="125" hits="12" branch="false"/>
-                <line number="126" hits="12" branch="false"/>
-                <line number="127" hits="12" branch="false"/>
-                <line number="128" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="133" hits="3" branch="false"/>
-                <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="135" hits="6" branch="false"/>
-                <line number="136" hits="6" branch="false"/>
-                <line number="137" hits="6" branch="false"/>
-                <line number="138" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="142" hits="3" branch="false"/>
-                <line number="143" hits="3" branch="false"/>
-                <line number="144" hits="3" branch="false"/>
-                <line number="145" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="150" hits="33" branch="false"/>
-                <line number="151" hits="33" branch="false"/>
-                <line number="152" hits="135" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="153" hits="102" branch="false"/>
-                <line number="154" hits="102" branch="false"/>
-                <line number="156" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="161" hits="24" branch="false"/>
-                <line number="162" hits="24" branch="false"/>
-                <line number="163" hits="90" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="164" hits="66" branch="false"/>
-                <line number="166" hits="24" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="53" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="54" hits="12" branch="false"/>
-            <line number="56" hits="3" branch="false"/>
-            <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="70" hits="0" branch="false"/>
-            <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="72" hits="0" branch="false"/>
-            <line number="74" hits="0" branch="false"/>
-            <line number="75" hits="0" branch="false"/>
-            <line number="80" hits="27" branch="false"/>
-            <line number="81" hits="27" branch="false"/>
-            <line number="83" hits="105" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="84" hits="78" branch="false"/>
-            <line number="85" hits="78" branch="false"/>
-            <line number="87" hits="27" branch="false"/>
-            <line number="92" hits="0" branch="false"/>
-            <line number="97" hits="27" branch="false"/>
-            <line number="102" hits="24" branch="false"/>
-            <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="112" hits="27" branch="false"/>
-            <line number="113" hits="27" branch="false"/>
-            <line number="114" hits="105" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="115" hits="78" branch="false"/>
-            <line number="117" hits="27" branch="false"/>
-            <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="123" hits="0" branch="false"/>
-            <line number="125" hits="12" branch="false"/>
-            <line number="126" hits="12" branch="false"/>
-            <line number="127" hits="12" branch="false"/>
-            <line number="128" hits="12" branch="false"/>
-            <line number="133" hits="3" branch="false"/>
-            <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="135" hits="6" branch="false"/>
-            <line number="136" hits="6" branch="false"/>
-            <line number="137" hits="6" branch="false"/>
-            <line number="138" hits="3" branch="false"/>
-            <line number="142" hits="3" branch="false"/>
-            <line number="143" hits="3" branch="false"/>
-            <line number="144" hits="3" branch="false"/>
-            <line number="145" hits="3" branch="false"/>
-            <line number="150" hits="33" branch="false"/>
-            <line number="151" hits="33" branch="false"/>
-            <line number="152" hits="135" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="153" hits="102" branch="false"/>
-            <line number="154" hits="102" branch="false"/>
-            <line number="156" hits="33" branch="false"/>
-            <line number="161" hits="24" branch="false"/>
-            <line number="162" hits="24" branch="false"/>
-            <line number="163" hits="90" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="164" hits="66" branch="false"/>
-            <line number="166" hits="24" branch="false"/>
-            <line number="171" hits="42" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="172" hits="0" branch="false"/>
-            <line number="173" hits="42" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="174" hits="39" branch="false"/>
-            <line number="176" hits="3" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletCookieMap"
-               filename="org/apache/commons/chain/web/servlet/ServletCookieMap.java" line-rate="0.8775510204081632"
-               branch-rate="0.6176470588235294" complexity="2.4375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="42" hits="21" branch="false"/>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="47" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="51" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="56" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8333333333333334"
-                    branch-rate="0.6666666666666666">
-              <lines>
-                <line number="61" hits="6" branch="false"/>
-                <line number="62" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="6" branch="false"/>
-                <line number="69" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="0.75">
-              <lines>
-                <line number="74" hits="3" branch="false"/>
-                <line number="75" hits="3" branch="false"/>
-                <line number="76" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="78" hits="6" branch="false"/>
-                <line number="81" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="86" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="0.8333333333333334"
-                    branch-rate="0.6666666666666666">
-              <lines>
-                <line number="91" hits="12" branch="false"/>
-                <line number="92" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="93" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="94" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="95" hits="12" branch="false"/>
-                <line number="99" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="104" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="109" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="159" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="160" hits="0" branch="false"/>
-                <line number="161" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="162" hits="18" branch="false"/>
-                <line number="164" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="0.75">
-              <lines>
-                <line number="114" hits="3" branch="false"/>
-                <line number="115" hits="3" branch="false"/>
-                <line number="116" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="117" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="118" hits="6" branch="false"/>
-                <line number="121" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="126" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="131" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="136" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="141" hits="6" branch="false"/>
-                <line number="142" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="0.75">
-              <lines>
-                <line number="147" hits="3" branch="false"/>
-                <line number="148" hits="3" branch="false"/>
-                <line number="149" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="150" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="151" hits="6" branch="false"/>
-                <line number="154" hits="3" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="42" hits="21" branch="false"/>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="47" hits="21" branch="false"/>
-            <line number="51" hits="3" branch="false"/>
-            <line number="56" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="61" hits="6" branch="false"/>
-            <line number="62" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="6" branch="false"/>
-            <line number="69" hits="0" branch="false"/>
-            <line number="74" hits="3" branch="false"/>
-            <line number="75" hits="3" branch="false"/>
-            <line number="76" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="78" hits="6" branch="false"/>
-            <line number="81" hits="3" branch="false"/>
-            <line number="86" hits="0" branch="false"/>
-            <line number="91" hits="12" branch="false"/>
-            <line number="92" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="93" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="94" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="95" hits="12" branch="false"/>
-            <line number="99" hits="0" branch="false"/>
-            <line number="104" hits="24" branch="false"/>
-            <line number="109" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="114" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="116" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="117" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="118" hits="6" branch="false"/>
-            <line number="121" hits="3" branch="false"/>
-            <line number="126" hits="3" branch="false"/>
-            <line number="131" hits="3" branch="false"/>
-            <line number="136" hits="3" branch="false"/>
-            <line number="141" hits="6" branch="false"/>
-            <line number="142" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="147" hits="3" branch="false"/>
-            <line number="148" hits="3" branch="false"/>
-            <line number="149" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="150" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="151" hits="6" branch="false"/>
-            <line number="154" hits="3" branch="false"/>
-            <line number="159" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="160" hits="0" branch="false"/>
-            <line number="161" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="162" hits="18" branch="false"/>
-            <line number="164" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletGetLocaleCommand"
-               filename="org/apache/commons/chain/web/servlet/ServletGetLocaleCommand.java" line-rate="1.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="getLocale" signature="(Lorg/apache/commons/chain/Context;)Ljava/util/Locale;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="45" hits="12" branch="false"/>
-                <line number="47" hits="12" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="12" branch="false"/>
-            <line number="45" hits="12" branch="false"/>
-            <line number="47" hits="12" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletHeaderMap"
-               filename="org/apache/commons/chain/web/servlet/ServletHeaderMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="6" branch="false"/>
-                <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="6" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="6" branch="false"/>
-                <line number="74" hits="6" branch="false"/>
-                <line number="76" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="12" branch="false"/>
-                <line number="78" hits="12" branch="false"/>
-                <line number="80" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="12" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="6" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="9" branch="false"/>
-                <line number="131" hits="9" branch="false"/>
-                <line number="132" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="18" branch="false"/>
-                <line number="134" hits="18" branch="false"/>
-                <line number="136" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="9" branch="false"/>
-                <line number="142" hits="9" branch="false"/>
-                <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="18" branch="false"/>
-                <line number="146" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="6" branch="false"/>
-            <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="6" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="6" branch="false"/>
-            <line number="74" hits="6" branch="false"/>
-            <line number="76" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="12" branch="false"/>
-            <line number="78" hits="12" branch="false"/>
-            <line number="80" hits="6" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="6" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="6" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="9" branch="false"/>
-            <line number="131" hits="9" branch="false"/>
-            <line number="132" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="18" branch="false"/>
-            <line number="134" hits="18" branch="false"/>
-            <line number="136" hits="9" branch="false"/>
-            <line number="141" hits="9" branch="false"/>
-            <line number="142" hits="9" branch="false"/>
-            <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="18" branch="false"/>
-            <line number="146" hits="9" branch="false"/>
-            <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="12" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletHeaderValuesMap"
-               filename="org/apache/commons/chain/web/servlet/ServletHeaderValuesMap.java"
-               line-rate="0.8787878787878788" branch-rate="0.71875" complexity="2.375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.75"
-                    branch-rate="0.6666666666666666">
-              <lines>
-                <line number="62" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="63" hits="0" branch="false"/>
-                <line number="65" hits="6" branch="false"/>
-                <line number="66" hits="6" branch="false"/>
-                <line number="67" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="68" hits="9" branch="false"/>
-                <line number="69" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="70" hits="6" branch="false"/>
-                <line number="71" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="72" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="73" hits="0" branch="false"/>
-                <line number="74" hits="0" branch="false"/>
-                <line number="77" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="78" hits="6" branch="false"/>
-                <line number="81" hits="3" branch="false"/>
-                <line number="82" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="87" hits="6" branch="false"/>
-                <line number="88" hits="6" branch="false"/>
-                <line number="90" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="91" hits="12" branch="false"/>
-                <line number="92" hits="12" branch="false"/>
-                <line number="94" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="99" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="104" hits="6" branch="false"/>
-                <line number="105" hits="6" branch="false"/>
-                <line number="106" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="107" hits="9" branch="false"/>
-                <line number="109" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="114" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="119" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="176" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="177" hits="0" branch="false"/>
-                <line number="178" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="179" hits="12" branch="false"/>
-                <line number="181" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="124" hits="3" branch="false"/>
-                <line number="125" hits="3" branch="false"/>
-                <line number="126" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="127" hits="6" branch="false"/>
-                <line number="129" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="134" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="139" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="144" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="149" hits="9" branch="false"/>
-                <line number="150" hits="9" branch="false"/>
-                <line number="151" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="18" branch="false"/>
-                <line number="153" hits="18" branch="false"/>
-                <line number="155" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="160" hits="9" branch="false"/>
-                <line number="161" hits="9" branch="false"/>
-                <line number="162" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="163" hits="18" branch="false"/>
-                <line number="164" hits="18" branch="false"/>
-                <line number="165" hits="18" branch="false"/>
-                <line number="166" hits="45" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="167" hits="27" branch="false"/>
-                <line number="169" hits="18" branch="false"/>
-                <line number="170" hits="18" branch="false"/>
-                <line number="171" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="63" hits="0" branch="false"/>
-            <line number="65" hits="6" branch="false"/>
-            <line number="66" hits="6" branch="false"/>
-            <line number="67" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="68" hits="9" branch="false"/>
-            <line number="69" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="70" hits="6" branch="false"/>
-            <line number="71" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="72" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="73" hits="0" branch="false"/>
-            <line number="74" hits="0" branch="false"/>
-            <line number="77" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="78" hits="6" branch="false"/>
-            <line number="81" hits="3" branch="false"/>
-            <line number="82" hits="0" branch="false"/>
-            <line number="87" hits="6" branch="false"/>
-            <line number="88" hits="6" branch="false"/>
-            <line number="90" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="91" hits="12" branch="false"/>
-            <line number="92" hits="12" branch="false"/>
-            <line number="94" hits="6" branch="false"/>
-            <line number="99" hits="0" branch="false"/>
-            <line number="104" hits="6" branch="false"/>
-            <line number="105" hits="6" branch="false"/>
-            <line number="106" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="107" hits="9" branch="false"/>
-            <line number="109" hits="6" branch="false"/>
-            <line number="114" hits="24" branch="false"/>
-            <line number="119" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="124" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="126" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="127" hits="6" branch="false"/>
-            <line number="129" hits="3" branch="false"/>
-            <line number="134" hits="3" branch="false"/>
-            <line number="139" hits="3" branch="false"/>
-            <line number="144" hits="3" branch="false"/>
-            <line number="149" hits="9" branch="false"/>
-            <line number="150" hits="9" branch="false"/>
-            <line number="151" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="18" branch="false"/>
-            <line number="153" hits="18" branch="false"/>
-            <line number="155" hits="9" branch="false"/>
-            <line number="160" hits="9" branch="false"/>
-            <line number="161" hits="9" branch="false"/>
-            <line number="162" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="163" hits="18" branch="false"/>
-            <line number="164" hits="18" branch="false"/>
-            <line number="165" hits="18" branch="false"/>
-            <line number="166" hits="45" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="167" hits="27" branch="false"/>
-            <line number="169" hits="18" branch="false"/>
-            <line number="170" hits="18" branch="false"/>
-            <line number="171" hits="9" branch="false"/>
-            <line number="176" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="177" hits="0" branch="false"/>
-            <line number="178" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="179" hits="12" branch="false"/>
-            <line number="181" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletInitParamMap"
-               filename="org/apache/commons/chain/web/servlet/ServletInitParamMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/ServletContext;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="9" branch="false"/>
-                <line number="63" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="9" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="6" branch="false"/>
-                <line number="74" hits="6" branch="false"/>
-                <line number="76" hits="24" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="18" branch="false"/>
-                <line number="78" hits="18" branch="false"/>
-                <line number="80" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="18" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="18" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="9" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="9" branch="false"/>
-                <line number="131" hits="9" branch="false"/>
-                <line number="132" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="27" branch="false"/>
-                <line number="134" hits="27" branch="false"/>
-                <line number="136" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="12" branch="false"/>
-                <line number="142" hits="12" branch="false"/>
-                <line number="143" hits="48" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="36" branch="false"/>
-                <line number="146" hits="12" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="9" branch="false"/>
-            <line number="63" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="9" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="6" branch="false"/>
-            <line number="74" hits="6" branch="false"/>
-            <line number="76" hits="24" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="18" branch="false"/>
-            <line number="78" hits="18" branch="false"/>
-            <line number="80" hits="6" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="9" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="9" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="9" branch="false"/>
-            <line number="131" hits="9" branch="false"/>
-            <line number="132" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="27" branch="false"/>
-            <line number="134" hits="27" branch="false"/>
-            <line number="136" hits="9" branch="false"/>
-            <line number="141" hits="12" branch="false"/>
-            <line number="142" hits="12" branch="false"/>
-            <line number="143" hits="48" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="36" branch="false"/>
-            <line number="146" hits="12" branch="false"/>
-            <line number="151" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="18" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="18" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletParamMap"
-               filename="org/apache/commons/chain/web/servlet/ServletParamMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="6" branch="false"/>
-                <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="6" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="6" branch="false"/>
-                <line number="74" hits="6" branch="false"/>
-                <line number="76" hits="18" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="12" branch="false"/>
-                <line number="78" hits="12" branch="false"/>
-                <line number="80" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="12" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="6" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="9" branch="false"/>
-                <line number="131" hits="9" branch="false"/>
-                <line number="132" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="18" branch="false"/>
-                <line number="134" hits="18" branch="false"/>
-                <line number="136" hits="9" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="9" branch="false"/>
-                <line number="142" hits="9" branch="false"/>
-                <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="18" branch="false"/>
-                <line number="146" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="6" branch="false"/>
-            <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="6" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="6" branch="false"/>
-            <line number="74" hits="6" branch="false"/>
-            <line number="76" hits="18" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="12" branch="false"/>
-            <line number="78" hits="12" branch="false"/>
-            <line number="80" hits="6" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="6" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="6" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="9" branch="false"/>
-            <line number="131" hits="9" branch="false"/>
-            <line number="132" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="18" branch="false"/>
-            <line number="134" hits="18" branch="false"/>
-            <line number="136" hits="9" branch="false"/>
-            <line number="141" hits="9" branch="false"/>
-            <line number="142" hits="9" branch="false"/>
-            <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="18" branch="false"/>
-            <line number="146" hits="9" branch="false"/>
-            <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="12" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletParamValuesMap"
-               filename="org/apache/commons/chain/web/servlet/ServletParamValuesMap.java" line-rate="0.8888888888888888"
-               branch-rate="0.7" complexity="1.9375">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="1.0" branch-rate="0.5">
-              <lines>
-                <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="62" hits="6" branch="false"/>
-                <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="65" hits="6" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="73" hits="3" branch="false"/>
-                <line number="74" hits="3" branch="false"/>
-                <line number="76" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="77" hits="6" branch="false"/>
-                <line number="78" hits="6" branch="false"/>
-                <line number="80" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="90" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="95" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.6" branch-rate="0.5">
-              <lines>
-                <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="152" hits="0" branch="false"/>
-                <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="154" hits="12" branch="false"/>
-                <line number="156" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="105" hits="3" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-                <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="108" hits="6" branch="false"/>
-                <line number="110" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="120" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="125" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="130" hits="3" branch="false"/>
-                <line number="131" hits="3" branch="false"/>
-                <line number="132" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="133" hits="6" branch="false"/>
-                <line number="134" hits="6" branch="false"/>
-                <line number="136" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="141" hits="9" branch="false"/>
-                <line number="142" hits="9" branch="false"/>
-                <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="18" branch="false"/>
-                <line number="146" hits="9" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="57" hits="6" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="62" hits="6" branch="false"/>
-            <line number="63" hits="9" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="64" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="6" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="73" hits="3" branch="false"/>
-            <line number="74" hits="3" branch="false"/>
-            <line number="76" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="77" hits="6" branch="false"/>
-            <line number="78" hits="6" branch="false"/>
-            <line number="80" hits="3" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="90" hits="6" branch="false"/>
-            <line number="95" hits="24" branch="false"/>
-            <line number="100" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="105" hits="3" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="107" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="108" hits="6" branch="false"/>
-            <line number="110" hits="3" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="120" hits="3" branch="false"/>
-            <line number="125" hits="3" branch="false"/>
-            <line number="130" hits="3" branch="false"/>
-            <line number="131" hits="3" branch="false"/>
-            <line number="132" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="133" hits="6" branch="false"/>
-            <line number="134" hits="6" branch="false"/>
-            <line number="136" hits="3" branch="false"/>
-            <line number="141" hits="9" branch="false"/>
-            <line number="142" hits="9" branch="false"/>
-            <line number="143" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="18" branch="false"/>
-            <line number="146" hits="9" branch="false"/>
-            <line number="151" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="152" hits="0" branch="false"/>
-            <line number="153" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="154" hits="12" branch="false"/>
-            <line number="156" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletPathMapper"
-               filename="org/apache/commons/chain/web/servlet/ServletPathMapper.java" line-rate="0.0" branch-rate="0.0"
-               complexity="1.5">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="39" hits="0" branch="false"/>
-                <line number="45" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalog" signature="(Lorg/apache/commons/chain/Context;)Lorg/apache/commons/chain/Catalog;"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="121" hits="0" branch="false"/>
-                <line number="122" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="123" hits="0" branch="false"/>
-                <line number="125" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCatalogKey" signature="()Ljava/lang/String;" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="62" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCommandName" signature="(Lorg/apache/commons/chain/Context;)Ljava/lang/String;"
-                    line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="98" hits="0" branch="false"/>
-                <line number="99" hits="0" branch="false"/>
-                <line number="100" hits="0" branch="false"/>
-                <line number="102" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="103" hits="0" branch="false"/>
-                <line number="106" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setCatalogKey" signature="(Ljava/lang/String;)V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="78" hits="0" branch="false"/>
-                <line number="80" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="39" hits="0" branch="false"/>
-            <line number="45" hits="0" branch="false"/>
-            <line number="62" hits="0" branch="false"/>
-            <line number="78" hits="0" branch="false"/>
-            <line number="80" hits="0" branch="false"/>
-            <line number="98" hits="0" branch="false"/>
-            <line number="99" hits="0" branch="false"/>
-            <line number="100" hits="0" branch="false"/>
-            <line number="102" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="103" hits="0" branch="false"/>
-            <line number="106" hits="0" branch="false"/>
-            <line number="121" hits="0" branch="false"/>
-            <line number="122" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="123" hits="0" branch="false"/>
-            <line number="125" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletRequestScopeMap"
-               filename="org/apache/commons/chain/web/servlet/ServletRequestScopeMap.java"
-               line-rate="0.7846153846153846" branch-rate="0.5714285714285714" complexity="2.0625">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="43" hits="21" branch="false"/>
-                <line number="44" hits="21" branch="false"/>
-                <line number="45" hits="21" branch="false"/>
-                <line number="48" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="52" hits="3" branch="false"/>
-                <line number="53" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="54" hits="6" branch="false"/>
-                <line number="56" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="false"/>
-                <line number="68" hits="0" branch="false"/>
-                <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="70" hits="0" branch="false"/>
-                <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="72" hits="0" branch="false"/>
-                <line number="74" hits="0" branch="false"/>
-                <line number="75" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="80" hits="30" branch="false"/>
-                <line number="81" hits="30" branch="false"/>
-                <line number="83" hits="72" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="84" hits="42" branch="false"/>
-                <line number="85" hits="42" branch="false"/>
-                <line number="87" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="92" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="97" hits="21" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="102" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="171" hits="36" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="172" hits="0" branch="false"/>
-                <line number="173" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="174" hits="33" branch="false"/>
-                <line number="176" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="112" hits="30" branch="false"/>
-                <line number="113" hits="30" branch="false"/>
-                <line number="114" hits="72" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="115" hits="42" branch="false"/>
-                <line number="117" hits="30" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
-                    line-rate="0.8333333333333334" branch-rate="0.5">
-              <lines>
-                <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="123" hits="0" branch="false"/>
-                <line number="125" hits="12" branch="false"/>
-                <line number="126" hits="12" branch="false"/>
-                <line number="127" hits="12" branch="false"/>
-                <line number="128" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="133" hits="3" branch="false"/>
-                <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="135" hits="6" branch="false"/>
-                <line number="136" hits="6" branch="false"/>
-                <line number="137" hits="6" branch="false"/>
-                <line number="138" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="142" hits="3" branch="false"/>
-                <line number="143" hits="3" branch="false"/>
-                <line number="144" hits="3" branch="false"/>
-                <line number="145" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="150" hits="33" branch="false"/>
-                <line number="151" hits="33" branch="false"/>
-                <line number="152" hits="81" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="153" hits="48" branch="false"/>
-                <line number="154" hits="48" branch="false"/>
-                <line number="156" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="161" hits="27" branch="false"/>
-                <line number="162" hits="27" branch="false"/>
-                <line number="163" hits="63" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="164" hits="36" branch="false"/>
-                <line number="166" hits="27" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="43" hits="21" branch="false"/>
-            <line number="44" hits="21" branch="false"/>
-            <line number="45" hits="21" branch="false"/>
-            <line number="48" hits="21" branch="false"/>
-            <line number="52" hits="3" branch="false"/>
-            <line number="53" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="54" hits="6" branch="false"/>
-            <line number="56" hits="3" branch="false"/>
-            <line number="60" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="65" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="false"/>
-            <line number="68" hits="0" branch="false"/>
-            <line number="69" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="70" hits="0" branch="false"/>
-            <line number="71" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="72" hits="0" branch="false"/>
-            <line number="74" hits="0" branch="false"/>
-            <line number="75" hits="0" branch="false"/>
-            <line number="80" hits="30" branch="false"/>
-            <line number="81" hits="30" branch="false"/>
-            <line number="83" hits="72" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="84" hits="42" branch="false"/>
-            <line number="85" hits="42" branch="false"/>
-            <line number="87" hits="30" branch="false"/>
-            <line number="92" hits="0" branch="false"/>
-            <line number="97" hits="21" branch="false"/>
-            <line number="102" hits="24" branch="false"/>
-            <line number="107" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="112" hits="30" branch="false"/>
-            <line number="113" hits="30" branch="false"/>
-            <line number="114" hits="72" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="115" hits="42" branch="false"/>
-            <line number="117" hits="30" branch="false"/>
-            <line number="122" hits="12" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="123" hits="0" branch="false"/>
-            <line number="125" hits="12" branch="false"/>
-            <line number="126" hits="12" branch="false"/>
-            <line number="127" hits="12" branch="false"/>
-            <line number="128" hits="12" branch="false"/>
-            <line number="133" hits="3" branch="false"/>
-            <line number="134" hits="9" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="135" hits="6" branch="false"/>
-            <line number="136" hits="6" branch="false"/>
-            <line number="137" hits="6" branch="false"/>
-            <line number="138" hits="3" branch="false"/>
-            <line number="142" hits="3" branch="false"/>
-            <line number="143" hits="3" branch="false"/>
-            <line number="144" hits="3" branch="false"/>
-            <line number="145" hits="3" branch="false"/>
-            <line number="150" hits="33" branch="false"/>
-            <line number="151" hits="33" branch="false"/>
-            <line number="152" hits="81" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="153" hits="48" branch="false"/>
-            <line number="154" hits="48" branch="false"/>
-            <line number="156" hits="33" branch="false"/>
-            <line number="161" hits="27" branch="false"/>
-            <line number="162" hits="27" branch="false"/>
-            <line number="163" hits="63" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="164" hits="36" branch="false"/>
-            <line number="166" hits="27" branch="false"/>
-            <line number="171" hits="36" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="172" hits="0" branch="false"/>
-            <line number="173" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="174" hits="33" branch="false"/>
-            <line number="176" hits="3" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletSessionScopeMap"
-               filename="org/apache/commons/chain/web/servlet/ServletSessionScopeMap.java"
-               line-rate="0.8617021276595744" branch-rate="0.75" complexity="3.411764705882353">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Ljavax/servlet/http/HttpServletRequest;)V" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="44" hits="24" branch="false"/>
-                <line number="45" hits="24" branch="false"/>
-                <line number="46" hits="24" branch="false"/>
-                <line number="47" hits="24" branch="false"/>
-                <line number="50" hits="24" branch="false"/>
-                <line number="51" hits="24" branch="false"/>
-              </lines>
-            </method>
-            <method name="clear" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="55" hits="6" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="56" hits="3" branch="false"/>
-                <line number="57" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="58" hits="9" branch="false"/>
-                <line number="61" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsKey" signature="(Ljava/lang/Object;)Z" line-rate="0.6666666666666666"
-                    branch-rate="0.25">
-              <lines>
-                <line number="65" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="66" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="68" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="containsValue" signature="(Ljava/lang/Object;)Z" line-rate="0.2222222222222222"
-                    branch-rate="0.25">
-              <lines>
-                <line number="74" hits="3" branch="true" condition-coverage="50% (2/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="75" hits="3" branch="false"/>
-                <line number="77" hits="0" branch="false"/>
-                <line number="78" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="79" hits="0" branch="false"/>
-                <line number="80" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="81" hits="0" branch="false"/>
-                <line number="83" hits="0" branch="false"/>
-                <line number="84" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="entrySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="89" hits="33" branch="false"/>
-                <line number="90" hits="33" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="91" hits="30" branch="false"/>
-                <line number="93" hits="96" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="94" hits="66" branch="false"/>
-                <line number="95" hits="66" branch="false"/>
-                <line number="98" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="equals" signature="(Ljava/lang/Object;)Z" line-rate="0.6666666666666666" branch-rate="0.5">
-              <lines>
-                <line number="103" hits="3" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="104" hits="0" branch="false"/>
-                <line number="106" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="get" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="112" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="113" hits="24" branch="false"/>
-                <line number="115" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="hashCode" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="121" hits="27" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="122" hits="24" branch="false"/>
-                <line number="124" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="isEmpty" signature="()Z" line-rate="0.6666666666666666" branch-rate="0.25">
-              <lines>
-                <line number="130" hits="3" branch="true" condition-coverage="25% (1/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                    <condition number="1" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="132" hits="0" branch="false"/>
-                <line number="134" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="key" signature="(Ljava/lang/Object;)Ljava/lang/String;" line-rate="0.8" branch-rate="0.75">
-              <lines>
-                <line number="217" hits="39" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="218" hits="0" branch="false"/>
-                <line number="219" hits="39" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="220" hits="36" branch="false"/>
-                <line number="222" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="keySet" signature="()Ljava/util/Set;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="140" hits="33" branch="false"/>
-                <line number="141" hits="33" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="142" hits="30" branch="false"/>
-                <line number="143" hits="96" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="144" hits="66" branch="false"/>
-                <line number="147" hits="33" branch="false"/>
-              </lines>
-            </method>
-            <method name="put" signature="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"
-                    line-rate="0.7777777777777778" branch-rate="0.75">
-              <lines>
-                <line number="152" hits="15" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="153" hits="0" branch="false"/>
-                <line number="158" hits="15" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="159" hits="3" branch="false"/>
-                <line number="160" hits="0" branch="false"/>
-                <line number="163" hits="12" branch="false"/>
-                <line number="164" hits="12" branch="false"/>
-                <line number="165" hits="12" branch="false"/>
-                <line number="166" hits="12" branch="false"/>
-              </lines>
-            </method>
-            <method name="putAll" signature="(Ljava/util/Map;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="171" hits="6" branch="false"/>
-                <line number="172" hits="12" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="173" hits="6" branch="false"/>
-                <line number="174" hits="6" branch="false"/>
-                <line number="175" hits="6" branch="false"/>
-                <line number="176" hits="6" branch="false"/>
-              </lines>
-            </method>
-            <method name="remove" signature="(Ljava/lang/Object;)Ljava/lang/Object;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="180" hits="6" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="181" hits="3" branch="false"/>
-                <line number="182" hits="3" branch="false"/>
-                <line number="183" hits="3" branch="false"/>
-                <line number="184" hits="3" branch="false"/>
-                <line number="186" hits="3" branch="false"/>
-              </lines>
-            </method>
-            <method name="sessionExists" signature="()Z" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="227" hits="234" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="228" hits="60" branch="false"/>
-                <line number="229" hits="60" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="230" hits="21" branch="false"/>
-                <line number="233" hits="234" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="234" hits="195" branch="false"/>
-                <line number="236" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="size" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="192" hits="36" branch="false"/>
-                <line number="193" hits="36" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="194" hits="33" branch="false"/>
-                <line number="195" hits="108" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="196" hits="75" branch="false"/>
-                <line number="197" hits="75" branch="false"/>
-                <line number="200" hits="36" branch="false"/>
-              </lines>
-            </method>
-            <method name="values" signature="()Ljava/util/Collection;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="205" hits="30" branch="false"/>
-                <line number="206" hits="30" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="207" hits="27" branch="false"/>
-                <line number="208" hits="84" branch="true" condition-coverage="100% (2/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="209" hits="57" branch="false"/>
-                <line number="212" hits="30" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="44" hits="24" branch="false"/>
-            <line number="45" hits="24" branch="false"/>
-            <line number="46" hits="24" branch="false"/>
-            <line number="47" hits="24" branch="false"/>
-            <line number="50" hits="24" branch="false"/>
-            <line number="51" hits="24" branch="false"/>
-            <line number="55" hits="6" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="56" hits="3" branch="false"/>
-            <line number="57" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="58" hits="9" branch="false"/>
-            <line number="61" hits="6" branch="false"/>
-            <line number="65" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="66" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="68" hits="3" branch="false"/>
-            <line number="74" hits="3" branch="true" condition-coverage="50% (2/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="75" hits="3" branch="false"/>
-            <line number="77" hits="0" branch="false"/>
-            <line number="78" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="79" hits="0" branch="false"/>
-            <line number="80" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="81" hits="0" branch="false"/>
-            <line number="83" hits="0" branch="false"/>
-            <line number="84" hits="0" branch="false"/>
-            <line number="89" hits="33" branch="false"/>
-            <line number="90" hits="33" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="91" hits="30" branch="false"/>
-            <line number="93" hits="96" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="94" hits="66" branch="false"/>
-            <line number="95" hits="66" branch="false"/>
-            <line number="98" hits="33" branch="false"/>
-            <line number="103" hits="3" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="104" hits="0" branch="false"/>
-            <line number="106" hits="3" branch="false"/>
-            <line number="112" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="113" hits="24" branch="false"/>
-            <line number="115" hits="3" branch="false"/>
-            <line number="121" hits="27" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="122" hits="24" branch="false"/>
-            <line number="124" hits="3" branch="false"/>
-            <line number="130" hits="3" branch="true" condition-coverage="25% (1/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-                <condition number="1" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="132" hits="0" branch="false"/>
-            <line number="134" hits="3" branch="false"/>
-            <line number="140" hits="33" branch="false"/>
-            <line number="141" hits="33" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="142" hits="30" branch="false"/>
-            <line number="143" hits="96" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="144" hits="66" branch="false"/>
-            <line number="147" hits="33" branch="false"/>
-            <line number="152" hits="15" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="153" hits="0" branch="false"/>
-            <line number="158" hits="15" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="159" hits="3" branch="false"/>
-            <line number="160" hits="0" branch="false"/>
-            <line number="163" hits="12" branch="false"/>
-            <line number="164" hits="12" branch="false"/>
-            <line number="165" hits="12" branch="false"/>
-            <line number="166" hits="12" branch="false"/>
-            <line number="171" hits="6" branch="false"/>
-            <line number="172" hits="12" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="173" hits="6" branch="false"/>
-            <line number="174" hits="6" branch="false"/>
-            <line number="175" hits="6" branch="false"/>
-            <line number="176" hits="6" branch="false"/>
-            <line number="180" hits="6" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="181" hits="3" branch="false"/>
-            <line number="182" hits="3" branch="false"/>
-            <line number="183" hits="3" branch="false"/>
-            <line number="184" hits="3" branch="false"/>
-            <line number="186" hits="3" branch="false"/>
-            <line number="192" hits="36" branch="false"/>
-            <line number="193" hits="36" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="194" hits="33" branch="false"/>
-            <line number="195" hits="108" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="196" hits="75" branch="false"/>
-            <line number="197" hits="75" branch="false"/>
-            <line number="200" hits="36" branch="false"/>
-            <line number="205" hits="30" branch="false"/>
-            <line number="206" hits="30" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="207" hits="27" branch="false"/>
-            <line number="208" hits="84" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="209" hits="57" branch="false"/>
-            <line number="212" hits="30" branch="false"/>
-            <line number="217" hits="39" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="218" hits="0" branch="false"/>
-            <line number="219" hits="39" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="220" hits="36" branch="false"/>
-            <line number="222" hits="3" branch="false"/>
-            <line number="227" hits="234" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="228" hits="60" branch="false"/>
-            <line number="229" hits="60" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="230" hits="21" branch="false"/>
-            <line number="233" hits="234" branch="true" condition-coverage="100% (2/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="234" hits="195" branch="false"/>
-            <line number="236" hits="39" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletSetLocaleCommand"
-               filename="org/apache/commons/chain/web/servlet/ServletSetLocaleCommand.java" line-rate="0.0"
-               branch-rate="1.0" complexity="1.0">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="31" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="setLocale" signature="(Lorg/apache/commons/chain/Context;Ljava/util/Locale;)V" line-rate="0.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="45" hits="0" branch="false"/>
-                <line number="47" hits="0" branch="false"/>
-                <line number="49" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="31" hits="0" branch="false"/>
-            <line number="45" hits="0" branch="false"/>
-            <line number="47" hits="0" branch="false"/>
-            <line number="49" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.apache.commons.chain.web.servlet.ServletWebContext"
-               filename="org/apache/commons/chain/web/servlet/ServletWebContext.java" line-rate="0.96875"
-               branch-rate="1.0" complexity="2.125">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="46" hits="0" branch="false"/>
-                <line number="47" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="&lt;init&gt;"
-                    signature="(Ljavax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="60" hits="123" branch="false"/>
-                <line number="62" hits="123" branch="false"/>
-                <line number="64" hits="123" branch="false"/>
-                <line number="74" hits="123" branch="false"/>
-                <line number="80" hits="123" branch="false"/>
-                <line number="87" hits="123" branch="false"/>
-                <line number="94" hits="123" branch="false"/>
-                <line number="101" hits="123" branch="false"/>
-                <line number="107" hits="123" branch="false"/>
-                <line number="114" hits="123" branch="false"/>
-                <line number="121" hits="123" branch="false"/>
-                <line number="127" hits="123" branch="false"/>
-                <line number="134" hits="123" branch="false"/>
-                <line number="140" hits="123" branch="false"/>
-                <line number="147" hits="123" branch="false"/>
-              </lines>
-            </method>
-            <method name="getApplicationScope" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="249" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="250" hits="21" branch="false"/>
-                <line number="252" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getContext" signature="()Ljavax/servlet/ServletContext;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="160" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="getCookies" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="340" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="341" hits="21" branch="false"/>
-                <line number="343" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getHeader" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="264" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="265" hits="21" branch="false"/>
-                <line number="267" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getHeaderValues" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="279" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="280" hits="21" branch="false"/>
-                <line number="282" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getInitParam" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="294" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="295" hits="21" branch="false"/>
-                <line number="297" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParam" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="309" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="310" hits="21" branch="false"/>
-                <line number="312" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getParamValues" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="324" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="325" hits="21" branch="false"/>
-                <line number="327" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getRequest" signature="()Ljavax/servlet/http/HttpServletRequest;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="172" hits="96" branch="false"/>
-              </lines>
-            </method>
-            <method name="getRequestScope" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="355" hits="57" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="356" hits="21" branch="false"/>
-                <line number="358" hits="57" branch="false"/>
-              </lines>
-            </method>
-            <method name="getResponse" signature="()Ljavax/servlet/http/HttpServletResponse;" line-rate="1.0"
-                    branch-rate="1.0">
-              <lines>
-                <line number="184" hits="39" branch="false"/>
-              </lines>
-            </method>
-            <method name="getSessionScope" signature="()Ljava/util/Map;" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="370" hits="60" branch="true" condition-coverage="100% (4/4)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="100%"/>
-                    <condition number="1" type="jump" coverage="100%"/>
-                  </conditions>
-                </line>
-                <line number="371" hits="24" branch="false"/>
-                <line number="373" hits="60" branch="false"/>
-              </lines>
-            </method>
-            <method name="initialize"
-                    signature="(Ljavax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V"
-                    line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="202" hits="123" branch="false"/>
-                <line number="203" hits="123" branch="false"/>
-                <line number="204" hits="123" branch="false"/>
-                <line number="208" hits="123" branch="false"/>
-              </lines>
-            </method>
-            <method name="release" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="220" hits="3" branch="false"/>
-                <line number="221" hits="3" branch="false"/>
-                <line number="222" hits="3" branch="false"/>
-                <line number="223" hits="3" branch="false"/>
-                <line number="224" hits="3" branch="false"/>
-                <line number="225" hits="3" branch="false"/>
-                <line number="226" hits="3" branch="false"/>
-                <line number="227" hits="3" branch="false"/>
-                <line number="228" hits="3" branch="false"/>
-                <line number="231" hits="3" branch="false"/>
-                <line number="232" hits="3" branch="false"/>
-                <line number="233" hits="3" branch="false"/>
-                <line number="235" hits="3" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="46" hits="0" branch="false"/>
-            <line number="47" hits="0" branch="false"/>
-            <line number="60" hits="123" branch="false"/>
-            <line number="62" hits="123" branch="false"/>
-            <line number="64" hits="123" branch="false"/>
-            <line number="74" hits="123" branch="false"/>
-            <line number="80" hits="123" branch="false"/>
-            <line number="87" hits="123" branch="false"/>
-            <line number="94" hits="123" branch="false"/>
-            <line number="101" hits="123" branch="false"/>
-            <line number="107" hits="123" branch="false"/>
-            <line number="114" hits="123" branch="false"/>
-            <line number="121" hits="123" branch="false"/>
-            <line number="127" hits="123" branch="false"/>
-            <line number="134" hits="123" branch="false"/>
-            <line number="140" hits="123" branch="false"/>
-            <line number="147" hits="123" branch="false"/>
-            <line number="160" hits="39" branch="false"/>
-            <line number="172" hits="96" branch="false"/>
-            <line number="184" hits="39" branch="false"/>
-            <line number="202" hits="123" branch="false"/>
-            <line number="203" hits="123" branch="false"/>
-            <line number="204" hits="123" branch="false"/>
-            <line number="208" hits="123" branch="false"/>
-            <line number="220" hits="3" branch="false"/>
-            <line number="221" hits="3" branch="false"/>
-            <line number="222" hits="3" branch="false"/>
-            <line number="223" hits="3" branch="false"/>
-            <line number="224" hits="3" branch="false"/>
-            <line number="225" hits="3" branch="false"/>
-            <line number="226" hits="3" branch="false"/>
-            <line number="227" hits="3" branch="false"/>
-            <line number="228" hits="3" branch="false"/>
-            <line number="231" hits="3" branch="false"/>
-            <line number="232" hits="3" branch="false"/>
-            <line number="233" hits="3" branch="false"/>
-            <line number="235" hits="3" branch="false"/>
-            <line number="249" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="250" hits="21" branch="false"/>
-            <line number="252" hits="57" branch="false"/>
-            <line number="264" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="265" hits="21" branch="false"/>
-            <line number="267" hits="57" branch="false"/>
-            <line number="279" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="280" hits="21" branch="false"/>
-            <line number="282" hits="57" branch="false"/>
-            <line number="294" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="295" hits="21" branch="false"/>
-            <line number="297" hits="57" branch="false"/>
-            <line number="309" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="310" hits="21" branch="false"/>
-            <line number="312" hits="57" branch="false"/>
-            <line number="324" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="325" hits="21" branch="false"/>
-            <line number="327" hits="57" branch="false"/>
-            <line number="340" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="341" hits="21" branch="false"/>
-            <line number="343" hits="57" branch="false"/>
-            <line number="355" hits="57" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="356" hits="21" branch="false"/>
-            <line number="358" hits="57" branch="false"/>
-            <line number="370" hits="60" branch="true" condition-coverage="100% (4/4)">
-              <conditions>
-                <condition number="0" type="jump" coverage="100%"/>
-                <condition number="1" type="jump" coverage="100%"/>
-              </conditions>
-            </line>
-            <line number="371" hits="24" branch="false"/>
-            <line number="373" hits="60" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-  </packages>
-</coverage>
diff --git a/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml b/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml
deleted file mode 100644 (file)
index ebef5af..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>fake.group</groupId>
-  <artifactId>fake.artifactId</artifactId>
-  <packaging>jar</packaging>
-  <version>1.0-SNAPSHOT</version>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>2.2</version>
-        <configuration>
-          <outputDirectory>overridden/dir</outputDirectory>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
\ No newline at end of file
diff --git a/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldInsertCoverageAtFileLevel/coverage.xml b/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldInsertCoverageAtFileLevel/coverage.xml
deleted file mode 100644 (file)
index 0f9517a..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
-
-<coverage line-rate="0.37142857142857144" branch-rate="0.25" lines-covered="13" lines-valid="35" branches-covered="1"
-          branches-valid="4" complexity="1.3076923076923077" version="1.9.2" timestamp="1253274062754">
-  <sources>
-    <source>/Users/simon/projects/sonar/trunk/tests/integration/reference-projects/reference/src/main/java</source>
-    <source>--source</source>
-  </sources>
-  <packages>
-    <package name="org.sonar.samples" line-rate="0.37142857142857144" branch-rate="0.25"
-             complexity="1.3076923076923077">
-      <classes>
-        <class name="org.sonar.samples.InnerClass" filename="org/sonar/samples/InnerClass.java"
-               line-rate="0.5384615384615384" branch-rate="0.5" complexity="1.3076923076923077">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="22" hits="2" branch="false"/>
-                <line number="44" hits="2" branch="false"/>
-              </lines>
-            </method>
-            <method name="methodOne" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="25" hits="0" branch="false"/>
-                <line number="26" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="methodReturnThree" signature="()I" line-rate="0.8333333333333334" branch-rate="0.5">
-              <lines>
-                <line number="34" hits="1" branch="false"/>
-                <line number="35" hits="1" branch="false"/>
-                <line number="36" hits="1" branch="true" condition-coverage="50% (1/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="50%"/>
-                  </conditions>
-                </line>
-                <line number="37" hits="0" branch="false"/>
-                <line number="39" hits="1" branch="false"/>
-                <line number="41" hits="1" branch="false"/>
-              </lines>
-            </method>
-            <method name="methodTwo" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="29" hits="0" branch="false"/>
-                <line number="30" hits="0" branch="false"/>
-                <line number="31" hits="0" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="22" hits="2" branch="false"/>
-            <line number="25" hits="0" branch="false"/>
-            <line number="26" hits="0" branch="false"/>
-            <line number="29" hits="0" branch="false"/>
-            <line number="30" hits="0" branch="false"/>
-            <line number="31" hits="0" branch="false"/>
-            <line number="34" hits="1" branch="false"/>
-            <line number="35" hits="1" branch="false"/>
-            <line number="36" hits="1" branch="true" condition-coverage="50% (1/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="50%"/>
-              </conditions>
-            </line>
-            <line number="37" hits="0" branch="false"/>
-            <line number="39" hits="1" branch="false"/>
-            <line number="41" hits="1" branch="false"/>
-            <line number="44" hits="2" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.sonar.samples.InnerClass$InnerClassInside" filename="org/sonar/samples/InnerClass.java"
-               line-rate="0.2727272727272727" branch-rate="0.0" complexity="1.3076923076923077">
-          <methods>
-            <method name="&lt;init&gt;" signature="(Lorg/sonar/samples/InnerClass;)V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="46" hits="1" branch="false"/>
-                <line number="47" hits="1" branch="false"/>
-              </lines>
-            </method>
-            <method name="innerMethodOne" signature="()V" line-rate="0.0" branch-rate="0.0">
-              <lines>
-                <line number="50" hits="0" branch="false"/>
-                <line number="51" hits="0" branch="false"/>
-                <line number="52" hits="0" branch="true" condition-coverage="0% (0/2)">
-                  <conditions>
-                    <condition number="0" type="jump" coverage="0%"/>
-                  </conditions>
-                </line>
-                <line number="53" hits="0" branch="false"/>
-                <line number="55" hits="0" branch="false"/>
-                <line number="57" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="innerMethodTwo" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="60" hits="0" branch="false"/>
-                <line number="61" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="methodReturnFour" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="64" hits="1" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="46" hits="1" branch="false"/>
-            <line number="47" hits="1" branch="false"/>
-            <line number="50" hits="0" branch="false"/>
-            <line number="51" hits="0" branch="false"/>
-            <line number="52" hits="0" branch="true" condition-coverage="0% (0/2)">
-              <conditions>
-                <condition number="0" type="jump" coverage="0%"/>
-              </conditions>
-            </line>
-            <line number="53" hits="0" branch="false"/>
-            <line number="55" hits="0" branch="false"/>
-            <line number="57" hits="0" branch="false"/>
-            <line number="60" hits="0" branch="false"/>
-            <line number="61" hits="0" branch="false"/>
-            <line number="64" hits="1" branch="false"/>
-          </lines>
-        </class>
-        <class name="org.sonar.samples.PrivateClass" filename="org/sonar/samples/InnerClass.java"
-               line-rate="0.2727272727272727" branch-rate="1.0" complexity="1.3076923076923077">
-          <methods>
-            <method name="&lt;init&gt;" signature="()V" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="71" hits="1" branch="false"/>
-                <line number="73" hits="1" branch="false"/>
-              </lines>
-            </method>
-            <method name="innerMethodFive" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="85" hits="0" branch="false"/>
-                <line number="87" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="innerMethodFour" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="80" hits="0" branch="false"/>
-                <line number="81" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="innerMethodSix" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="91" hits="0" branch="false"/>
-                <line number="93" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="innerMethodThree" signature="()V" line-rate="0.0" branch-rate="1.0">
-              <lines>
-                <line number="76" hits="0" branch="false"/>
-                <line number="77" hits="0" branch="false"/>
-              </lines>
-            </method>
-            <method name="methodReturnfive" signature="()I" line-rate="1.0" branch-rate="1.0">
-              <lines>
-                <line number="96" hits="1" branch="false"/>
-              </lines>
-            </method>
-          </methods>
-          <lines>
-            <line number="71" hits="1" branch="false"/>
-            <line number="73" hits="1" branch="false"/>
-            <line number="76" hits="0" branch="false"/>
-            <line number="77" hits="0" branch="false"/>
-            <line number="80" hits="0" branch="false"/>
-            <line number="81" hits="0" branch="false"/>
-            <line number="85" hits="0" branch="false"/>
-            <line number="87" hits="0" branch="false"/>
-            <line number="91" hits="0" branch="false"/>
-            <line number="93" hits="0" branch="false"/>
-            <line number="96" hits="1" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-  </packages>
-</coverage>
diff --git a/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldNotCountTwiceAnonymousClasses.xml b/plugins/sonar-cobertura-plugin/src/test/resources/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldNotCountTwiceAnonymousClasses.xml
deleted file mode 100644 (file)
index 55fa298..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
-
-
-
-<!-- line 26 is defined in two nodes -->    
-
-
-
-<coverage line-rate="0.37142857142857144" branch-rate="0.25" lines-covered="13" lines-valid="35" branches-covered="1"
-          branches-valid="4" complexity="1.3076923076923077" version="1.9.2" timestamp="1253274062754">
-  <sources>
-    <source>/Users/simon/projects/sonar/trunk/tests/integration/reference-projects/reference/src/main/java</source>
-    <source>--source</source>
-  </sources>
-  <packages>
-    <package name="org.sonar.samples" line-rate="0.37142857142857144" branch-rate="0.25"
-             complexity="1.3076923076923077">
-      <classes>
-        <class name="MyClass" filename="org/sonar/samples/MyFile.java"
-               line-rate="0.5384615384615384" branch-rate="0.5" complexity="1.3076923076923077">
-          <lines>
-            <line number="22" hits="2" branch="false"/>
-            <line number="25" hits="0" branch="false"/>
-            <line number="26" hits="0" branch="false"/>
-          </lines>
-        </class>
-        <class name="MyClass$1" filename="org/sonar/samples/MyFile.java"
-               line-rate="0.5384615384615384" branch-rate="0.5" complexity="1.3076923076923077">
-          <lines>
-
-            <line number="26" hits="0" branch="false"/>
-            <line number="27" hits="0" branch="false"/>
-            <line number="28" hits="0" branch="false"/>
-          </lines>
-        </class>
-      </classes>
-    </package>
-  </packages>
-</coverage>
diff --git a/pom.xml b/pom.xml
index 5a2596a7aceaf20d6e8807aa9fce0e91e9b655d0..e2b0c28e1e586c6765e7204a66ee025df85d0671 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,6 @@
     <module>plugins/sonar-core-gwt</module>
     <module>plugins/sonar-core-plugin</module>
     <module>plugins/sonar-dbcleaner-plugin</module>
-    <module>plugins/sonar-cobertura-plugin</module>
     <module>plugins/sonar-findbugs-plugin</module>
     <module>plugins/sonar-cpd-plugin</module>
     <module>plugins/sonar-design-plugin</module>
         <artifactId>sonar-surefire-plugin</artifactId>
         <version>${sonarJava.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.codehaus.sonar-plugins.java</groupId>
+        <artifactId>sonar-cobertura-plugin</artifactId>
+        <version>${sonarJava.version}</version>
+      </dependency>
       <dependency>
         <groupId>asm</groupId>
         <artifactId>asm-all</artifactId>
index 9425fc70f286f22b6887c9c6c6a15f6493120d49..ac950cdabfdde7b0be1bb3b16c7db8a586546ee0 100644 (file)
       <scope>runtime</scope>
     </dependency>
     <dependency>
-      <groupId>org.codehaus.sonar.plugins</groupId>
+      <groupId>org.codehaus.sonar-plugins.java</groupId>
       <artifactId>sonar-cobertura-plugin</artifactId>
-      <version>${project.version}</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
index 481d68de489705d8f17bf5669cccf8cb290502a6..bf96e6d43df91e9c58515ac24b1c34d2830aa417 100644 (file)
           <scope>provided</scope>
         </dependency>
         <dependency>
-          <groupId>org.codehaus.sonar.plugins</groupId>
+          <groupId>org.codehaus.sonar-plugins.java</groupId>
           <artifactId>sonar-cobertura-plugin</artifactId>
-          <version>${project.version}</version>
+          <version>${sonarJava.version}</version>
           <type>sonar-plugin</type>
           <scope>provided</scope>
         </dependency>