You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2025/11/25 13:08:13 UTC

(jmeter) branch master updated (824e1c3008 -> bf02362adc)

This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


    from 824e1c3008 chore: bump com.miglayout to 11.4.2
     new 920fa60dc2 chore: replace xmlpull with Woodstox
     new 5fefa6ee64 feat: fallback to English locale when loading test plan with string value in enum property
     new 681db6b79f test: add expected files for TestSaveService
     new bf02362adc feat: add ConstantThroughputTimerSchema and use it in ConstantThroughputTimer

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 bin/testfiles/BatchTestLocal.xml                   | 980 ++++++++++-----------
 bin/testfiles/Bug52968.xml                         |  36 +-
 ...SavedGenTest210.jmx => GenTest210.expected.jmx} | 650 +++++++-------
 .../{GenTest25.jmx => GenTest25.expected.jmx}      | 620 ++++++-------
 .../{GenTest251.jmx => GenTest251.expected.jmx}    | 620 ++++++-------
 .../{GenTest26.jmx => GenTest26.expected.jmx}      | 646 +++++++-------
 .../{SavedGenTest27.jmx => GenTest27.expected.jmx} | 606 ++++++-------
 ...nTest27.jmx => GenTest27_original.expected.jmx} | 628 ++++++-------
 ...vedGenTest2_13.jmx => GenTest2_13.expected.jmx} | 648 +++++++-------
 ...SavedGenTest3_0.jmx => GenTest3_0.expected.jmx} | 650 +++++++-------
 .../{SavedGuiTest.jmx => GuiTest.expected.jmx}     | 176 ++--
 ...SavedGuiTest231.jmx => GuiTest231.expected.jmx} | 128 +--
 ...iginal.jmx => GuiTest231_original.expected.jmx} | 166 ++--
 bin/testfiles/HTMLParserTestFile_2.xml             | 120 +--
 ...stPlan.jmx => ProxyServerTestPlan.expected.jmx} |  20 +-
 gradle/verification-keyring.keys                   |  28 +
 gradle/verification-metadata.xml                   |  38 +-
 lib/aareadme.txt                                   | 280 ------
 src/bom-thirdparty/build.gradle.kts                |   3 +-
 .../java/org/apache/jmeter/config/CSVDataSet.java  |  87 +-
 .../apache/jmeter/config/CSVDataSetBeanInfo.java   |  11 +-
 .../jmeter/timers/ConstantThroughputTimer.java     | 104 +--
 .../timers/ConstantThroughputTimerBeanInfo.java    |  10 +-
 .../timers/ConstantThroughputTimerSchema.kt}       |  22 +-
 .../ConstantThroughputTimerResources.properties    |   2 +-
 .../ConstantThroughputTimerResources_de.properties |   2 +-
 .../ConstantThroughputTimerResources_es.properties |   2 +-
 .../ConstantThroughputTimerResources_fr.properties |   2 +-
 .../ConstantThroughputTimerResources_ko.properties |   2 +-
 ...nstantThroughputTimerResources_pt_BR.properties |   2 +-
 .../ConstantThroughputTimerResources_tr.properties |   2 +-
 ...nstantThroughputTimerResources_zh_CN.properties |   2 +-
 .../jmeter/timers/ConstantThroughputTimerTest.java |  14 +-
 src/core/build.gradle.kts                          |   7 +
 .../java/org/apache/jmeter/save/SaveService.java   |  60 +-
 .../save/converters/SampleResultConverter.java     |  14 +-
 .../save/converters/StringPropertyConverter.java   |   5 +-
 .../jmeter/testbeans/gui/ComboStringEditor.java    |  10 +-
 .../apache/jmeter/testbeans/gui/EnumEditor.java    |  66 +-
 .../testbeans/gui/GenericTestBeanCustomizer.java   | 109 +++
 .../java/org/apache/jmeter/util/JMeterUtils.java   |   6 +-
 .../org/apache/jmeter/save/JMeterStaxDriver.kt     |  21 +-
 .../apache/jmeter/save/XMLOutputFactoryDelegate.kt | 110 +++
 .../jmeter/save/XMLStreamWriterSkipHeader.kt}      |  31 +-
 src/dist-check/build.gradle.kts                    |   6 +
 .../org/apache/jmeter/save/TestSaveService.java    | 246 +++---
 src/dist/src/dist/expected_release_jars.csv        |   5 +-
 .../kotlin/org/apache/jorphan/util/EnumUtils.kt    |  72 ++
 src/protocol/http/build.gradle.kts                 |   1 +
 49 files changed, 4092 insertions(+), 3984 deletions(-)
 copy bin/testfiles/{SavedGenTest210.jmx => GenTest210.expected.jmx} (77%)
 copy bin/testfiles/{GenTest25.jmx => GenTest25.expected.jmx} (75%)
 copy bin/testfiles/{GenTest251.jmx => GenTest251.expected.jmx} (75%)
 copy bin/testfiles/{GenTest26.jmx => GenTest26.expected.jmx} (75%)
 copy bin/testfiles/{SavedGenTest27.jmx => GenTest27.expected.jmx} (77%)
 copy bin/testfiles/{SavedGenTest27.jmx => GenTest27_original.expected.jmx} (77%)
 copy bin/testfiles/{SavedGenTest2_13.jmx => GenTest2_13.expected.jmx} (77%)
 copy bin/testfiles/{SavedGenTest3_0.jmx => GenTest3_0.expected.jmx} (76%)
 copy bin/testfiles/{SavedGuiTest.jmx => GuiTest.expected.jmx} (88%)
 copy bin/testfiles/{SavedGuiTest231.jmx => GuiTest231.expected.jmx} (94%)
 copy bin/testfiles/{GuiTest231_original.jmx => GuiTest231_original.expected.jmx} (92%)
 copy bin/testfiles/{ProxyServerTestPlan.jmx => ProxyServerTestPlan.expected.jmx} (89%)
 copy src/{protocol/http/src/main/kotlin/org/apache/jmeter/protocol/http/control/HeaderSchema.kt => components/src/main/kotlin/org/apache/jmeter/timers/ConstantThroughputTimerSchema.kt} (60%)
 copy build-logic-commons/settings.gradle.kts => src/core/src/main/kotlin/org/apache/jmeter/save/JMeterStaxDriver.kt (65%)
 create mode 100644 src/core/src/main/kotlin/org/apache/jmeter/save/XMLOutputFactoryDelegate.kt
 copy src/core/src/main/{java/org/apache/jmeter/report/processor/ApdexThresholdsInfo.java => kotlin/org/apache/jmeter/save/XMLStreamWriterSkipHeader.kt} (54%)
 create mode 100644 src/jorphan/src/main/kotlin/org/apache/jorphan/util/EnumUtils.kt


(jmeter) 01/04: chore: replace xmlpull with Woodstox

Posted by vl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 920fa60dc2ebd1d8644fc9c09478ca757c9931dc
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Mon Nov 10 10:10:39 2025 +0300

    chore: replace xmlpull with Woodstox
    
    xmlpull is unsupported, so let's move to a modern library
---
 bin/testfiles/BatchTestLocal.xml                   | 980 ++++++++++-----------
 bin/testfiles/Bug52968.xml                         |  36 +-
 bin/testfiles/HTMLParserTestFile_2.xml             | 120 +--
 gradle/verification-keyring.keys                   |  28 +
 gradle/verification-metadata.xml                   |  38 +-
 lib/aareadme.txt                                   | 280 ------
 src/bom-thirdparty/build.gradle.kts                |   3 +-
 src/core/build.gradle.kts                          |   6 +
 .../java/org/apache/jmeter/save/SaveService.java   |  60 +-
 .../save/converters/SampleResultConverter.java     |  14 +-
 .../save/converters/StringPropertyConverter.java   |   5 +-
 .../java/org/apache/jmeter/util/JMeterUtils.java   |   6 +-
 .../org/apache/jmeter/save/JMeterStaxDriver.kt     |  29 +
 .../apache/jmeter/save/XMLOutputFactoryDelegate.kt | 110 +++
 .../jmeter/save/XMLStreamWriterSkipHeader.kt       |  39 +
 src/dist-check/build.gradle.kts                    |   6 +
 .../org/apache/jmeter/save/TestSaveService.java    | 246 +++---
 src/dist/src/dist/expected_release_jars.csv        |   5 +-
 src/protocol/http/build.gradle.kts                 |   1 +
 19 files changed, 975 insertions(+), 1037 deletions(-)

diff --git a/bin/testfiles/BatchTestLocal.xml b/bin/testfiles/BatchTestLocal.xml
index 9dc72df530..c307c944cd 100644
--- a/bin/testfiles/BatchTestLocal.xml
+++ b/bin/testfiles/BatchTestLocal.xml
@@ -1,782 +1,782 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <testResults version="1.2">
 <sample s="true" lb="Setup 1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java 1 C1=1" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=1" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=1" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=1 C3=1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=2 C3=2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=3 C3=3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="If Test C1=1 C2=3 C3=3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=3 C3=3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=3 C3=3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=3 C3=3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=4 C3=4" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=5 C3=5" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java 1 C1=2" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=2" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=2" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=1 C3=6" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="If Test C1=2 C2=1 C3=6" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=1 C3=6" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=1 C3=6" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=1 C3=6" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=2 C3=7" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=3 C3=8" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=4 C3=9" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="If Test C1=2 C2=4 C3=9" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=4 C3=9" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=4 C3=9" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=4 C3=9" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=5 C3=10" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java 1 C1=1" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=1" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=1" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=1 C3=11" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=2 C3=12" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="If Test C1=1 C2=2 C3=12" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=2 C3=12" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=2 C3=12" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=2 C3=12" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=3 C3=13" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=4 C3=14" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=1 C2=5 C3=15" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="If Test C1=1 C2=5 C3=15" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=5 C3=15" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=5 C3=15" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=1 C2=5 C3=15" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java 1 C1=2" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=2" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Java 1 C1=2" rc="200" rm="OK" dt="text" by="10" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
   <responseData class="java.lang.String">ResultData</responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">SamplerData</samplerData>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=1 C3=16" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=2 C3=17" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=3 C3=18" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="If Test C1=2 C2=3 C3=18" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=3 C3=18" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=3 C3=18" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop3 C1=2 C2=3 C3=18" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Module" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=4 C3=19" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Loop5 C1=2 C2=5 C3=20" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If once 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java If once 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="false" lb="Java If all 1" rc="" rm="" dt="text" by="0" sc="1" ec="1" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="Java OK" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseData class="java.lang.String"></responseData>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseData class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="1 1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="2 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="3 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="0 4" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG1 = 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG OO = 1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG Loop =3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG2 = 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG1 = 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG Loop =3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG2 = 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG1 = 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG Loop =3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="TG2 = 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="CSV_VAR=2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="CSV_VAR=3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="CSV_VAR=1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="CSV_VAR=2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 <sample s="true" lb="BSH Counter: 1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
-  <samplerData class="java.lang.String">SampleResult.setSampleLabel(&quot;BSH Counter: 1&quot;);</samplerData>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
+  <samplerData class="java.lang.String">SampleResult.setSampleLabel("BSH Counter: 1");</samplerData>
 </sample>
 <sample s="true" lb="BSH Counter: 2" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
-  <samplerData class="java.lang.String">SampleResult.setSampleLabel(&quot;BSH Counter: 2&quot;);</samplerData>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
+  <samplerData class="java.lang.String">SampleResult.setSampleLabel("BSH Counter: 2");</samplerData>
 </sample>
 <sample s="true" lb="BSH Counter: 3" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
-  <samplerData class="java.lang.String">SampleResult.setSampleLabel(&quot;BSH Counter: 3&quot;);</samplerData>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
+  <samplerData class="java.lang.String">SampleResult.setSampleLabel("BSH Counter: 3");</samplerData>
 </sample>
 <sample s="true" lb="BSF Sampler" rc="200" rm="OK" dt="text" by="3" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">12*12</samplerData>
 </sample>
 <sample s="true" lb="JSR223 Sampler" rc="200" rm="OK" dt="text" by="3" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
   <samplerData class="java.lang.String">11*11</samplerData>
 </sample>
 <sample s="true" lb="Post 1" rc="200" rm="OK" dt="text" by="0" sc="1" ec="0" ng="1" na="1">
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
 </sample>
 
 </testResults>
diff --git a/bin/testfiles/Bug52968.xml b/bin/testfiles/Bug52968.xml
index 097e304c8b..4a32d6b13e 100644
--- a/bin/testfiles/Bug52968.xml
+++ b/bin/testfiles/Bug52968.xml
@@ -10,61 +10,61 @@
 <sample s="true" lb="TC-NOPARENT-1" rc="200" rm="Number of samples in transaction : 1, number of failing samples : 0" dt="" sc="1" ec="0" ng="1" na="1"/>
 <sample s="true" lb="JR-MUSTEXECUTE" rc="" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF-JR0-0" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING0" rc="" rm="Number of samples in transaction : 1, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TNPF-JR0-1" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING0" rc="" rm="Number of samples in transaction : 1, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TNPF-JR0-2" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING0" rc="" rm="Number of samples in transaction : 1, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="true" lb="TNPF-JR0-0" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF-JR1-0" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING1" rc="" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="true" lb="TNPF-JR0-1" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF-JR1-1" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING1" rc="" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="true" lb="TNPF-JR0-2" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF-JR1-2" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING1" rc="" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="true" lb="TNPF2-JR1-0" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF2-JR2-0" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING2" rc="" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="true" lb="TNPF2-JR1-1" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF2-JR2-1" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING2" rc="" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="true" lb="TNPF2-JR1-2" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TNPF2-JR2-2" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-  <responseData class="java.lang.String"></responseData>
+  <responseData class="java.lang.String"/>
 </sample>
 <sample s="false" lb="TC-NOPARENT-FAILING2" rc="" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
@@ -92,61 +92,61 @@
 <sample s="true" lb="JR-MUSTEXECUTE" rc="" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
 <sample s="false" lb="TC-PARENT-FAILING1" rc="500" rm="Number of samples in transaction : 1, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="false" lb="TPF-JR0-0" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING1" rc="500" rm="Number of samples in transaction : 1, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="false" lb="TPF-JR0-1" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING1" rc="500" rm="Number of samples in transaction : 1, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="false" lb="TPF-JR0-2" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING1" rc="500" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="true" lb="TP-JR0-0" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
   <sample s="false" lb="TP-JR1-0" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING1" rc="500" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="true" lb="TP-JR0-1" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
   <sample s="false" lb="TP-JR1-1" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING1" rc="500" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="true" lb="TP-JR0-2" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
   <sample s="false" lb="TP-JR1-2" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING2" rc="500" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="true" lb="TPF-JR1-0" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
   <sample s="false" lb="TPF-JR2-0" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING2" rc="500" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="true" lb="TPF-JR1-1" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
   <sample s="false" lb="TPF-JR2-1" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
 <sample s="false" lb="TC-PARENT-FAILING2" rc="500" rm="Number of samples in transaction : 2, number of failing samples : 1" dt="" sc="1" ec="1" ng="1" na="1">
   <sample s="true" lb="TPF-JR1-2" rc="200" rm="" dt="text" sc="1" ec="0" ng="1" na="1"/>
   <sample s="false" lb="TPF-JR2-2" rc="500" rm="" dt="text" sc="1" ec="1" ng="1" na="1">
-    <responseData class="java.lang.String"></responseData>
+    <responseData class="java.lang.String"/>
   </sample>
   <responseData class="java.lang.String">Non-TEXT response data, cannot record: ()</responseData>
 </sample>
diff --git a/bin/testfiles/HTMLParserTestFile_2.xml b/bin/testfiles/HTMLParserTestFile_2.xml
index 36dc54f77f..e893245e92 100644
--- a/bin/testfiles/HTMLParserTestFile_2.xml
+++ b/bin/testfiles/HTMLParserTestFile_2.xml
@@ -2,110 +2,110 @@
 <testResults version="1.2">
 <httpSample s="true" lb="Download embedded" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="76146" sc="1" ec="0" ng="1" na="1">
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-0" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="40176" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2.html</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-1" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="1321" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/style.css</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-2" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="5819" sc="1" ec="0" ng="1" na="1">
     <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2_files/halfbanner.htm-0" rc="200" rm="OK" tn="" dt="text" de="UTF-8" by="398" sc="1" ec="0" ng="0" na="0">
-      <responseHeader class="java.lang.String"></responseHeader>
-      <requestHeader class="java.lang.String"></requestHeader>
-      <responseFile class="java.lang.String"></responseFile>
-      <cookies class="java.lang.String"></cookies>
+      <responseHeader class="java.lang.String"/>
+      <requestHeader class="java.lang.String"/>
+      <responseFile class="java.lang.String"/>
+      <cookies class="java.lang.String"/>
       <method class="java.lang.String">GET</method>
-      <queryString class="java.lang.String"></queryString>
+      <queryString class="java.lang.String"/>
       <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/halfbanner.htm</java.net.URL>
     </httpSample>
     <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2_files/halfbanner.htm-1" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="5421" sc="1" ec="0" ng="0" na="0">
-      <responseHeader class="java.lang.String"></responseHeader>
-      <requestHeader class="java.lang.String"></requestHeader>
-      <responseFile class="java.lang.String"></responseFile>
-      <cookies class="java.lang.String"></cookies>
+      <responseHeader class="java.lang.String"/>
+      <requestHeader class="java.lang.String"/>
+      <responseFile class="java.lang.String"/>
+      <cookies class="java.lang.String"/>
       <method class="java.lang.String">GET</method>
-      <queryString class="java.lang.String"></queryString>
+      <queryString class="java.lang.String"/>
       <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/halfbanner_data/2011-na-234x60.png</java.net.URL>
     </httpSample>
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/halfbanner.htm</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-3" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="8584" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/jakarta-logo.gif</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-4" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="8886" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/logo.jpg</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-5" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="3064" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/http-config-example.png</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-6" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="2395" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/scoping1.png</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-7" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="2641" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/scoping2.png</java.net.URL>
   </httpSample>
   <httpSample s="true" lb="file:testfiles/HTMLParserTestFile_2.html-8" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" de="UTF-8" by="3260" sc="1" ec="0" ng="1" na="1">
-    <responseHeader class="java.lang.String"></responseHeader>
-    <requestHeader class="java.lang.String"></requestHeader>
-    <responseFile class="java.lang.String"></responseFile>
-    <cookies class="java.lang.String"></cookies>
+    <responseHeader class="java.lang.String"/>
+    <requestHeader class="java.lang.String"/>
+    <responseFile class="java.lang.String"/>
+    <cookies class="java.lang.String"/>
     <method class="java.lang.String">GET</method>
-    <queryString class="java.lang.String"></queryString>
+    <queryString class="java.lang.String"/>
     <java.net.URL>file:testfiles/HTMLParserTestFile_2_files/scoping3.png</java.net.URL>
   </httpSample>
-  <responseHeader class="java.lang.String"></responseHeader>
-  <requestHeader class="java.lang.String"></requestHeader>
-  <responseFile class="java.lang.String"></responseFile>
-  <cookies class="java.lang.String"></cookies>
+  <responseHeader class="java.lang.String"/>
+  <requestHeader class="java.lang.String"/>
+  <responseFile class="java.lang.String"/>
+  <cookies class="java.lang.String"/>
   <method class="java.lang.String">GET</method>
-  <queryString class="java.lang.String"></queryString>
+  <queryString class="java.lang.String"/>
   <java.net.URL>file:testfiles/HTMLParserTestFile_2.html</java.net.URL>
 </httpSample>
 
diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys
index 90d623d73a..7d1d5a6392 100644
--- a/gradle/verification-keyring.keys
+++ b/gradle/verification-keyring.keys
@@ -6685,6 +6685,34 @@ uAngfd6DOtCKYtNKP7xqDu/2bMU23cxGaRj2ToH4RfCClg1B
 =rv9Q
 -----END PGP PUBLIC KEY BLOCK-----
 
+pub    67BF80B10AD53983
+uid    Colm O hEigeartaigh <co...@apache.org>
+
+sub    26107AC31C6209E9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+xsBNBE1T+3UBCAC7mTa5TEQoI1M1oftvc2SSvt1OyzwWkqxP8+uTnz41aGI9t9h8
+WVKtVk331NTMYhdPCRLLEILaaePmCmVbLCBERGkm/L8SFWQKIjpI++AEiuJxvPWQ
+aB+2iA1HC7XA9ItW8082TnE3wz4e59FMgurns6HT9V/NTVlmNJqYEyDnRzwvFW0n
+rVDxIy3PP1QTWcydTWuulOz3J1TMt98jeTznzz6EY0vqM6F7F94o5GTPo4z05iiW
+Nh3OTs7afvB4z2nErvmedIHtbbOMWphLL9nZXfDO/7s/AY7hmXpABcJgX0NdVnD3
+NZ7mBYVnH6SounCOMAV0QuF03c4f50pbXKeNABEBAAG0KUNvbG0gTyBoRWlnZWFy
+dGFpZ2ggPGNvaGVpZ2VhQGFwYWNoZS5vcmc+zsBNBE1T+3UBCADdCjZJEPqzc9nG
+ru9MvRoJr3jqAiLOrfGpQRPKzX2Vzbpdm2loUIjP91iVinG+H48L+D7IaIlO42Iu
+RMX6fms+jDd19D/sWOeNx6dhmKyDUT0/Qs7bpIyE9PBaWs1DHMRfLtBfr4rLObwV
+6IPeODWM3yaMXyVhTf2AyLtWjNhAJoeh7g9ffZ18xdEmMoL0j/qfc87PW1Ts8fpg
+7t9QgzDqjLA3k8NLkPUT4z68ux7sDjM09oBS5O4CrGfY8xJflmpGqZusjA2WIA1G
+zb48KCdz2ljcuji8HNc/PZtTblxiJdB04aGUzK+Ify0fUsEERZWPlQxuAuPHyf/K
+RoXYKE9LABEBAAHCwF8EGAECAAkFAk1T+3UCGwwACgkQZ7+AsQrVOYNd0Af/VOFw
+E0Eo/XaPdposnBF0E0NyOla1XACz/FV66zXYSv6jC5dvyPIe1TzIuTpSm7WPFPYl
+1eIdvDXtfpJ9f9GDp8n4gw7wv9nvYBCiQvl4fmmY9kTfm55LuTUf/lynAVd8EHO3
+d9gVoLKMRhittXX7utyfUjRT2GO0iOIxHoKWmHEfZ7Vm2QIeyNgVQCi6559DTUib
+Jbop7ir7WDLrKgBetgG6zpfiXgOIDlK0dtbkEqyHuGfi9Bis7Y8O4Rnn8jxkhSmC
+1VrA3Xo6NklFA2DKKHNlOcw6tjgkriv99prqvPjzihylO8L/fnoYfgjAHs6vjhtq
+Q2HLF8bidnMgrMeWFA==
+=81ZR
+-----END PGP PUBLIC KEY BLOCK-----
+
 pub    689CBE64F4BC997F
 uid    Szczepan Faber <sz...@gmail.com>
 
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index cd9371bb77..e142e946cf 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -17,7 +17,8 @@
          <trusted-key id="015479E1055341431B4545AB72475FD306B9CAB7" group="com.googlecode.javaewah"/>
          <trusted-key id="019082BC00E0324E2AEF4CF00D3B328562A119A7" group="org.openjdk.jmh"/>
          <trusted-key id="04543577D6A9CC626239C50C7ECBD740FF06AEB5">
-            <trusting group="com.sun.xml.bind" name="jaxb-bom-ext" version="4.0.6"/>
+            <trusting group="com.sun.xml.bind"/>
+            <trusting group="com.sun.xml.bind.mvn"/>
             <trusting group="org.glassfish.jaxb"/>
          </trusted-key>
          <trusted-key id="050A37A2E0577F4BAA095B52602EC18D20C4661C">
@@ -32,18 +33,18 @@
          <trusted-key id="0A4AA2D7C6053AB068D206AA4692A312EF600C15" group="org.wiremock"/>
          <trusted-key id="0CC641C3A62453AB390066C4A41F13C999945293">
             <trusting group="commons-collections"/>
-            <trusting group="commons-logging" name="commons-logging" version="1.2"/>
+            <trusting group="commons-logging"/>
          </trusted-key>
-         <trusted-key id="0CDE80149711EB46DFF17AE421A24B3F8B0F594A" group="org.apache" name="apache" version="16"/>
+         <trusted-key id="0CDE80149711EB46DFF17AE421A24B3F8B0F594A" group="org.apache"/>
          <trusted-key id="0D35D3F60078655126908E8AF3D1600878E85A3D" group="io.netty"/>
-         <trusted-key id="10F3C7A02ECA55E502BADCF3991EFB94DB91127D" group="org.ow2" name="ow2" version="1.5.1"/>
+         <trusted-key id="10F3C7A02ECA55E502BADCF3991EFB94DB91127D" group="org.ow2"/>
          <trusted-key id="124DAC8350968EC2A8260584EE8ECBBBC188FD5D" group="org.ajoberstar.grgit"/>
          <trusted-key id="12D16069219C90212A974D119AE296FD02E9F65B" group="org.apache.commons"/>
          <trusted-key id="13AC2213964ABE1D1C147C0E1939A2520BAB1D90" group="org.freemarker"/>
-         <trusted-key id="147B691A19097624902F4EA9689CBE64F4BC997F" group="org.mockito" name="mockito-bom"/>
+         <trusted-key id="147B691A19097624902F4EA9689CBE64F4BC997F" group="org.mockito"/>
          <trusted-key id="160A7A9CF46221A56B06AD64461A804F2609FD89" group="com.github.shyiko.klob"/>
          <trusted-key id="184454FAD8697760F3E00D2E4A51A45B944FFD51" group="org.apache.tika"/>
-         <trusted-key id="190D5A957FF22273E601F7A7C92C5FEC70161C62" group="org.apache" name="apache" version="18"/>
+         <trusted-key id="190D5A957FF22273E601F7A7C92C5FEC70161C62" group="org.apache"/>
          <trusted-key id="19BEAB2D799C020F17C69126B16698A4ADF4D638" group="org.checkerframework"/>
          <trusted-key id="1A2D608BF6D37AEF12D53A4F37B0A85F5CE89B0C" group="org.eclipse.jetty.toolchain"/>
          <trusted-key id="1A55F091AD28C07F831FA44D7905DE25C78AD456" group="com.google.protobuf"/>
@@ -55,7 +56,10 @@
          <trusted-key id="1FCFFE916B6670868FA0EA0391AE1504568EC4DD" group="org.jodd"/>
          <trusted-key id="223D3A74B068ECA354DC385CE126833F9CF64915" group="org.apache.xbean"/>
          <trusted-key id="2655176F748FD83725B4805FF2A01147D830C125" group="org.testcontainers"/>
-         <trusted-key id="28118C070CB22A0175A2E8D43D12CA2AC19F3181" group="^com[.]fasterxml($|([.].*))" regex="true"/>
+         <trusted-key id="28118C070CB22A0175A2E8D43D12CA2AC19F3181">
+            <trusting group="org.codehaus.woodstox"/>
+            <trusting group="^com[.]fasterxml($|([.].*))" regex="true"/>
+         </trusted-key>
          <trusted-key id="2B1042677FD8190C7B9FC0DC2161D72E7DCD4258" group="^org[.]sonarsource($|([.].*))" regex="true"/>
          <trusted-key id="2B34821418CF19CF1F2A8352953E02E4F573B46F" group="jakarta.platform"/>
          <trusted-key id="2C1708EA05ADF6966C32D6454A1BAC7F1E3B89B3" group="nl.jqno.equalsverifier"/>
@@ -83,7 +87,7 @@
          <trusted-key id="41A1A08C62FCA78B79D3081164A16FAAEC16A4BE" group="org.apache.commons"/>
          <trusted-key id="41CD49B4EF5876F9E9F691DABAC30622339994C4" group="org.jspecify"/>
          <trusted-key id="41D266DB4427983A1A4AFB0C3684155E9365C30E" group="com.jayway.jsonpath"/>
-         <trusted-key id="44FBDBBC1A00FE414F1C1873586654072EAD6677" group="org.sonatype.oss" name="oss-parent" version="9"/>
+         <trusted-key id="44FBDBBC1A00FE414F1C1873586654072EAD6677" group="org.sonatype.oss"/>
          <trusted-key id="475F3B8E59E6E63AA78067482C7B12F2A511E325" group="org.slf4j"/>
          <trusted-key id="47EB6836245D2D40E89DFB4136D4E9618F3ADAB5" group="io.github.microutils"/>
          <trusted-key id="48B086A7D843CFA258E83286928FBF39003C0425">
@@ -113,7 +117,7 @@
          <trusted-key id="60200AC4AE761F1614D6C46766D68DAA073BE985" group="org.slf4j"/>
          <trusted-key id="60ECEF24611FE832714F86AA9D5BEFFA5942C049" group="org.apache.camel"/>
          <trusted-key id="6214760097DC5CFAD0175AC2C9FBAA83A8753994">
-            <trusting group="com.fasterxml" name="oss-parent" version="38"/>
+            <trusting group="com.fasterxml"/>
             <trusting group="org.codehaus.woodstox"/>
          </trusted-key>
          <trusted-key id="635EE627345F3C1DD422B2E207D3516820BCF6B1" group="com.github.ben-manes.caffeine"/>
@@ -133,7 +137,7 @@
          <trusted-key id="7B79ADD11F8A779FE90FD3D0893A028475557671" group="com.gradle"/>
          <trusted-key id="7B9751FC3F01F134F476464CD0EB627D4885CED1" group="org.apache.velocity"/>
          <trusted-key id="7C669810892CBD3148FA92995B05CCDE140C2876" group="org.eclipse.jgit"/>
-         <trusted-key id="808D78B17A5A2D7C3668E31FBFFC9B54721244AD" group="org.apache.commons" name="commons-parent" version="39"/>
+         <trusted-key id="808D78B17A5A2D7C3668E31FBFFC9B54721244AD" group="org.apache.commons"/>
          <trusted-key id="817EA1255546D6070A23AA00DB45D3A62A183CE2" group="com.miglayout"/>
          <trusted-key id="82D8419BA697F0E7FB85916EE91287822FDB81B1" group="org.apache.geronimo.genesis"/>
          <trusted-key id="839323A4780D5BF9A6978970152888E10EF880B3" group="org.unbescape"/>
@@ -148,7 +152,7 @@
          <trusted-key id="98465301A4939C0279F2E847D89D05374952262B" group="org.jetbrains.dokka"/>
          <trusted-key id="9857C388D7D1D9D031274CD0A5DEF5A76F94A471" group="^com[.]github[.]spotbugs($|([.].*))" regex="true"/>
          <trusted-key id="9A4555C237785CA8A6DC1FE58799AF90C06EFBBD" group="org.jdom"/>
-         <trusted-key id="A1483F88BA771993AB609C43590C2310CEE1C9BE" group="jakarta.jms" name="jakarta.jms-api" version="3.1.0"/>
+         <trusted-key id="A1483F88BA771993AB609C43590C2310CEE1C9BE" group="jakarta.jms"/>
          <trusted-key id="A413F67D71BEEC23ADD0CE0ACB43338E060CF9FA" group="org.jacoco"/>
          <trusted-key id="A48FADE54FA56B93FE66EC17A05EBEE656F3E01B" group="org.apache.geronimo.genesis"/>
          <trusted-key id="A4FD709CC4B0515F2E6AF04E218FA0F6A941A037" group="com.github.kevinstern"/>
@@ -156,7 +160,7 @@
          <trusted-key id="A7892505CF1A58076453E52D7999BEFBA1039E8B" group="net.bytebuddy"/>
          <trusted-key id="A9789342F598AD5B1175EF357EB97D110DFADD60" group="com.googlecode.concurrent-trees"/>
          <trusted-key id="AA417737BD805456DB3CBDDE6601E5C08DCCBB96" group="info.picocli"/>
-         <trusted-key id="AA70C7C433D501636392EC02153E7A3C2B4E5118" group="org.eclipse.ee4j" name="project"/>
+         <trusted-key id="AA70C7C433D501636392EC02153E7A3C2B4E5118" group="org.eclipse.ee4j"/>
          <trusted-key id="AA782B04ABD9E36CF3096037B59D3D0F9F9C8684" group="org.apache.cxf"/>
          <trusted-key id="ADBC987D1A7B91DB6B0AAA81995EFBF4A3D20BEB" group="^com[.]pinterest($|([.].*))" regex="true"/>
          <trusted-key id="AEB1E1AEC035C66FA39589D13EFC46EE83C40224" group="com.networknt"/>
@@ -185,6 +189,7 @@
          <trusted-key id="D477D51812E692011DB11E66A6EA2E2BF22E0543" group="io.github.java-diff-utils"/>
          <trusted-key id="D6F1BC78607808EC8E9F69437A8860944FAD5F62" group="org.apache.commons"/>
          <trusted-key id="D76260C72DF74E66268F7770AB049DF4AB24C1EF" group="org.hsqldb"/>
+         <trusted-key id="DB45ECD19B97514F727105AE67BF80B10AD53983" group="org.apache.santuario" name="xmlsec" version="4.0.4"/>
          <trusted-key id="DBD744ACE7ADE6AA50DD591F66B50994442D2D40" group="^com[.]squareup($|([.].*))" regex="true"/>
          <trusted-key id="DDDEE87612E9FB95F5C8D91E411063A3A0FFD119" group="org.apache-extras.beanshell"/>
          <trusted-key id="E06A36F67D8C1BD13F1F278D0CA7139CBC7026F9" group="dnsjava"/>
@@ -193,7 +198,7 @@
          <trusted-key id="E5138A8E9F2E7E42D38B14D99AEE152CDCCEBFCB" group="io.github.hakky54"/>
          <trusted-key id="E5B8247AF8A619A28F90FDFC9FF25980F5BA7E4F" group="org.fusesource.hawtbuf"/>
          <trusted-key id="E5C3B1929191DF06136CCB2B164779204E106A76" group="org.javassist"/>
-         <trusted-key id="E725C3877939E8FFEA7E3C44B6D3FC494798E478" group="com.sun.xml.ws" name="jaxws-ri-bom" version="4.0.3"/>
+         <trusted-key id="E725C3877939E8FFEA7E3C44B6D3FC494798E478" group="com.sun.xml.ws"/>
          <trusted-key id="E77417AC194160A3FABD04969A259C7EE636C5ED" group="com.google.errorprone"/>
          <trusted-key id="E7DC75FC24FB3C8DFE8086AD3D5839A2262CBBFB" group="org.jetbrains.kotlinx"/>
          <trusted-key id="E85AED155021AF8A6C6B7A4A7C7D8456294423BA" group="org.objenesis"/>
@@ -203,7 +208,7 @@
          <trusted-key id="EB1B3DE71713C9EC2E87CC26EE92349AD86DE446" group="com.google.j2objc"/>
          <trusted-key id="EE0CA873074092F806F59B65D364ABAA39A47320" group="^com[.]google($|([.].*))" regex="true"/>
          <trusted-key id="EED6202038849B47FEEAD1EC9266326161C26F29" group="net.javacrumbs.json-unit"/>
-         <trusted-key id="F254B35617DC255D9344BCFA873A8E86B4372146" group="org.apache" name="apache" version="13"/>
+         <trusted-key id="F254B35617DC255D9344BCFA873A8E86B4372146" group="org.apache"/>
          <trusted-key id="F3184BCD55F4D016E30D4C9BF42E87F9665015C9" group="org.jsoup"/>
          <trusted-key id="F5FEBA84EB26C56457B2CF819E31AB27445478DB" group="org.infinispan"/>
          <trusted-key id="FA77DCFEF2EE6EB2DEBEDD2C012579464D01C06A">
@@ -349,6 +354,11 @@
             <sha256 value="ce15e856443960ad2c213b99a8e07ef5d40049ff1f3f0eb883848dddce250c13" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="com.sun.xml.bind.mvn" name="jaxb-parent" version="4.0.6">
+         <artifact name="jaxb-parent-4.0.6.pom">
+            <sha256 value="ce83ef2301bba73fd97db192cff49aa82b2d49a03724ced7c8a66c75a0c597db" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="com.sun.xml.ws" name="jaxws-ri-bom" version="4.0.3">
          <artifact name="jaxws-ri-bom-4.0.3.pom">
             <pgp value="E725C3877939E8FFEA7E3C44B6D3FC494798E478"/>
diff --git a/lib/aareadme.txt b/lib/aareadme.txt
index 80c49aa031..3dc0a5bf84 100644
--- a/lib/aareadme.txt
+++ b/lib/aareadme.txt
@@ -8,283 +8,3 @@ lib/junit - test jar for JUnit sampler
 lib/opt - Directory where Optional 3rd party libraries live
 lib/src - storage area for source and javadoc jars, e.g. for use in IDEs
           Excluded from SVN, not included in classpath
-
-Which jars are used by which modules?
-====================================
-[not exhaustive]
-
-asm-7.1 (org.ow2.asm)
-----------------------
-- JSON Path extractor
-
-accessors-smart-1.2 (net.minidev)
-----------------------
-- JSON Path extractor
-
-bsf-2.4.0.jar (org.apache.bsf)
--------------
-http://jakarta.apache.org/site/downloads/downloads_bsf.cgi
-- BSF test elements (sampler etc.)
-
-bsh-2.0b6.jar (org.bsh)
--------------
-- BeanShell test elements
-
-dec-0.1.2 (org.brotli.dec)
------------------
-https://github.com/google/brotli/tree/master/java/org/brotli
-- Used by HTTP4 HC Impl for brotli decoding
-
-caffeine 2.8.0
------------------
-https://github.com/ben-manes/caffeine/
-- Used by CssParser
-- Used by JMS Publisher Sampler
-
-commons-codec-1.13
------------------
-http://commons.apache.org/downloads/download_codec.cgi
-- Used by ProxyControl and JSR223Test Element for Base64 and md5
-
-commons-collections-3.2.2
--------------------------
-http://commons.apache.org/downloads/download_collections.cgi
-- ListenerNotifier
-- Anakia
-
-commons-io-2.6
---------------
-http://commons.apache.org/downloads/download_io.cgi
-- FTPSampler
-
-commons-jexl-2.1.1, commons-jexl3-3.1
-----------------
-http://commons.apache.org/downloads/download_jexl.cgi
-- Jexl function and BSF test elements
-
-commons-lang-2.6
-----------------
-http://commons.apache.org/downloads/download_lang.cgi
-- velocity (Anakia)
-
-commons-lang3-3.9
-----------------
-http://commons.apache.org/downloads/download_lang.cgi
-- URLCollection (unescapeXml)
-
-commons-math3-3.6.1
------------------
-http://commons.apache.org/proper/commons-math/download_math.cgi
-- BackendListener
-
-commons-net-3.6
------------------
-http://commons.apache.org/downloads/download_net.cgi
-- FTPSampler
-
-commons-pool2-2.7.0
------------------
-http://commons.apache.org/proper/commons-pool/download_pool.cgi
-- BackendListener
-
-darcula
------------------
-https://github.com/bulenkov/Darcula/
-- Look and Feel
-
-dnsjava-2.1.9
------------------
-https://github.com/dnsjava/dnsjava
-- DNSCacheManager
-
-groovy-3.0.3
-----------------------
-Advised scripting language for JSR223 Test Elements
-
-freemarker-2.3.29.jar
-----------------------
-- used by Report/Dashboard feature
-
-javax.activation-api-1.2.0.jar
-----------------------
-- used by SMTP Sampler
-
-javax.activation-1.2.0.jar
-----------------------
-- used by SMTP Sampler
-
-jackson-annotations-2.9.9 (com.fasterxml.jackson)
-----------------------
-
-Used by JsonExporter in report generator (com.fasterxml.jackson)
-----------------------
-jackson-annotations-2.9.9 (https://github.com/FasterXML/jackson-annotations)
-jackson-core-2.9.9 (https://github.com/FasterXML/jackson-core)
-jackson-databind-2.9.9 (https://github.com/FasterXML/jackson-databind)
-
-jCharts-0.7.5 (org.jCharts)
--------------
-http://jcharts.sourceforge.net/downloads.html
-- AxisGraph,LineGraph,LineChart
-
-jdom-1.1.3
---------
-http://www.jdom.org/downloads/index.html
-- Anakia
-
-jodd-core-5.0.13
---------
-http://www.jodd.org/
-- CSS/JQuery like extractor dependency
-
-jodd-lagarto-5.0.6
---------
-http://jodd.org/doc/csselly/
-- CSS/JQuery like extractor
-
-jodd-log-5.0.6
---------
-http://www.jodd.org/
-- CSS/JQuery like extractor dependency
-
-jodd-props-5.0.6
---------
-http://www.jodd.org/
-- used by Report/Dashboard feature properties management
-
-json-path-2.4.0
---------
-https://github.com/jayway/JsonPath
-- JSON Path Extractor
-- JSON Path Renderer
-
-json-smart-2.3 (net.minidev)
---------
-https://github.com/netplex/json-smart-v2
-- JSON Path Extractor
-- JSON Path Renderer
-
-jsoup-1.12.1
---------
-http://www.jsoup.org/
-- CSS/JQuery like extractor
-
-log4j2-2.12.1
---------
-https://logging.apache.org/log4j/2.x/
-- Logging framework
-
-ph-css-6.2.0
---------
-https://github.com/phax/ph-css
-- CssParser
-
-ph-commons-9.3.7
---------
-https://github.com/phax/ph-commons
-- CssParser
-
-rhino-1.7.11
---------
-https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Download_Rhino
-- javascript function
-- IfController
-- WhileController
-- BSF (Javascript)
-
-jTidy-r938
-----
-- http: various modules for parsing html
-- org.xml.sax - various
-- XPathUtil (XPath assertion)
-
-junit 4.12
------------
-- unit tests, JUnit sampler
-
-HttpComponents
-- HttpComponents Core 4.4.12
-- HttpComponents Client 4.5.10
-- HttpComponents AsyncClient 4.1.4
-- HttpComponents Core NIO 4.4.12
------------
-http://hc.apache.org/
-- httpclient 4 implementation for HTTP sampler
-- httpasyncclient implementation for InfluxDB Backend Listener Client
-
-oro-2.0.8
----------
-http://jakarta.apache.org/site/downloads/downloads_oro.cgi
-- regular expressions: various
-
-rsyntaxtextarea-3.0.4
----------------------
-http://fifesoft.com/rsyntaxtextarea/
-- syntax coloration
-
-serialiser-2.7.1
-----------------
-http://www.apache.org/dyn/closer.cgi/xml/xalan-j
-- xalan
-
-slf4j-api-1.7.28
-----------------
-http://www.slf4j.org/
-- jodd-core
-- json-path
-- jmeter internal logging
-
-tika-1.21
---------------
-http://tika.apache.org/
-- Regular Expression Extractor
-
-commons-dbcp2-2.5.0 (org.apache.commons.dbcp2)
---------------------------
-- DataSourceElement (JDBC)
-
-Saxon-HE-9.9.1-5 (net.sf.saxon)
---------------------------
-- XPath2Extractor (XML)
-
-velocity-1.7
---------------
-http://velocity.apache.org/download.cgi
-- Anakia (create documentation) Not used by JMeter runtime
-
-xalan_2.7.1
------------
-http://www.apache.org/dyn/closer.cgi/xml/xalan-j
-+org.apache.xalan|xml|xpath
-
-xml-apis-1.4.01
---------------
-http://xerces.apache.org/xerces2-j/download.cgi
-+javax.xml
-+org.w3c.dom
-+org.xml.sax
-
-The x* jars above are used for XML handling
-
-xmlgraphics-commons-2.6 (org.apache.xmlgraphics.image.codec)
-------------------
-http://xmlgraphics.apache.org/commons/download.html
-- SaveGraphicsService
-
-xmlpull-1.1.3.1
----------------
-http://www.xmlpull.org/impls.shtml
-- xstream
-
-
-xpp3_min-1.1.4c
----------------
-http://x-stream.github.io/download.html
-or
-http://www.extreme.indiana.edu/dist/java-repository/xpp3/distributions/
-- xstream
-
-xstream-1.4.11
--------------
-http://x-stream.github.io/download.html
-- SaveService
diff --git a/src/bom-thirdparty/build.gradle.kts b/src/bom-thirdparty/build.gradle.kts
index fb4c59294c..e3d88db3a1 100644
--- a/src/bom-thirdparty/build.gradle.kts
+++ b/src/bom-thirdparty/build.gradle.kts
@@ -54,6 +54,7 @@ dependencies {
         api("com.google.errorprone:error_prone_annotations:2.44.0")
         api("com.helger.commons:ph-commons:12.1.0")
         api("com.helger:ph-css:8.1.0")
+        api("com.fasterxml.woodstox:woodstox-core:7.1.0")
         api("com.jayway.jsonpath:json-path:2.10.0")
         api("com.miglayout:miglayout-core:11.4.2")
         api("com.miglayout:miglayout-swing:11.4.2")
@@ -126,6 +127,7 @@ dependencies {
         api("org.bouncycastle:bcprov-jdk18on:1.82")
         api("org.brotli:dec:0.1.2")
         api("org.freemarker:freemarker:2.3.34")
+        api("org.glassfish.jaxb:txw2:4.0.6")
         api("org.jdom:jdom:1.1.3")
         api("org.jetbrains.lets-plot:lets-plot-batik:4.8.0")
         api("org.jetbrains.lets-plot:lets-plot-kotlin-jvm:4.11.2")
@@ -144,6 +146,5 @@ dependencies {
         api("xalan:serializer:2.7.3")
         api("xalan:xalan:2.7.3")
         api("xml-apis:xml-apis:1.4.01")
-        api("xmlpull:xmlpull:1.1.3.1")
     }
 }
diff --git a/src/core/build.gradle.kts b/src/core/build.gradle.kts
index ca9597a864..30be9b34c9 100644
--- a/src/core/build.gradle.kts
+++ b/src/core/build.gradle.kts
@@ -40,6 +40,8 @@ dependencies {
     }
     api("com.thoughtworks.xstream:xstream") {
         because("XStream in used in public API")
+        // We use StaXDriver, so we exclude xmlpull, see https://x-stream.github.io/download.html#optional-deps
+        exclude("io.github.x-stream", "mxparser")
     }
     api("org.apache.logging.log4j:log4j-1.2-api")
     api("org.apache.logging.log4j:log4j-api")
@@ -80,6 +82,10 @@ dependencies {
         }
     }
 
+    implementation("org.glassfish.jaxb:txw2") {
+        because("IndentingXMLStreamWriter is needed to indent the generated XML")
+    }
+    implementation("com.fasterxml.woodstox:woodstox-core")
     implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core")
     implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing")
     implementation("com.fasterxml.jackson.core:jackson-annotations")
diff --git a/src/core/src/main/java/org/apache/jmeter/save/SaveService.java b/src/core/src/main/java/org/apache/jmeter/save/SaveService.java
index 5a41d6ea0f..86c16fc626 100644
--- a/src/core/src/main/java/org/apache/jmeter/save/SaveService.java
+++ b/src/core/src/main/java/org/apache/jmeter/save/SaveService.java
@@ -56,7 +56,8 @@ import com.thoughtworks.xstream.converters.Converter;
 import com.thoughtworks.xstream.converters.DataHolder;
 import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
 import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
-import com.thoughtworks.xstream.io.xml.XppDriver;
+import com.thoughtworks.xstream.io.HierarchicalStreamDriver;
+import com.thoughtworks.xstream.io.xml.StaxDriver;
 import com.thoughtworks.xstream.mapper.CannotResolveClassException;
 import com.thoughtworks.xstream.mapper.Mapper;
 import com.thoughtworks.xstream.mapper.MapperWrapper;
@@ -78,8 +79,8 @@ public class SaveService {
     public static final String TEST_CLASS_NAME = "TestClassName"; // $NON-NLS-1$
 
     private static final class XStreamWrapper extends XStream {
-        private XStreamWrapper(ReflectionProvider reflectionProvider) {
-            super(reflectionProvider);
+        private XStreamWrapper(ReflectionProvider reflectionProvider, HierarchicalStreamDriver hierarchicalStreamDriver) {
+            super(reflectionProvider, hierarchicalStreamDriver);
         }
 
         // Override wrapMapper in order to insert the Wrapper in the chain
@@ -110,17 +111,16 @@ public class SaveService {
         }
     }
 
-    private static final XStream JMXSAVER = new XStreamWrapper(new PureJavaReflectionProvider());
-    private static final XStream JTLSAVER = new XStreamWrapper(new PureJavaReflectionProvider());
+    private static final JMeterStaxDriver STAXDRIVER_WITH_HEADER = new JMeterStaxDriver();
+    private static final JMeterStaxDriver STAXDRIVER_SKIP_HEADER = new JMeterStaxDriver(false, true);
+    private static final XStream JMXSAVER = new XStreamWrapper(new PureJavaReflectionProvider(), STAXDRIVER_WITH_HEADER);
+    private static final XStream JTLSAVER = new XStreamWrapper(new PureJavaReflectionProvider(), STAXDRIVER_WITH_HEADER);
     static {
         JTLSAVER.setMode(XStream.NO_REFERENCES); // This is needed to stop XStream keeping copies of each class
         JMeterUtils.setupXStreamSecurityPolicy(JMXSAVER);
         JMeterUtils.setupXStreamSecurityPolicy(JTLSAVER);
     }
 
-    // The XML header, with placeholder for encoding, since that is controlled by property
-    private static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"<ph>\"?>"; // $NON-NLS-1$
-
     // Default file name
     private static final String SAVESERVICE_PROPERTIES_FILE = "saveservice.properties"; // $NON-NLS-1$
 
@@ -299,25 +299,31 @@ public class SaveService {
 
     // Called by Save function
     public static void saveTree(HashTree tree, OutputStream out) throws IOException {
-        // Get the OutputWriter to use
-        OutputStreamWriter outputStreamWriter = getOutputStreamWriter(out);
-        writeXmlHeader(outputStreamWriter);
-        // Use deprecated method, to avoid duplicating code
         ScriptWrapper wrapper = new ScriptWrapper();
         wrapper.testPlan = tree;
-        JMXSAVER.toXML(wrapper, outputStreamWriter);
-        outputStreamWriter.write('\n');// Ensure terminated properly
-        outputStreamWriter.close();
+
+        if (fileEncoding == null || fileEncoding.isEmpty()) {
+            JMXSAVER.toXML(wrapper, out);
+        } else {
+            // Get the OutputWriter to use
+            try (OutputStreamWriter outputStreamWriter = getOutputStreamWriter(out)) {
+                // Use deprecated method, to avoid duplicating code
+                JMXSAVER.toXML(wrapper, outputStreamWriter);
+                outputStreamWriter.write('\n');// Ensure terminated properly
+            }
+        }
     }
 
     // Used by Test code
     public static void saveElement(Object el, OutputStream out) throws IOException {
         // Get the OutputWriter to use
-        OutputStreamWriter outputStreamWriter = getOutputStreamWriter(out);
-        writeXmlHeader(outputStreamWriter);
-        // Use deprecated method, to avoid duplicating code
-        JMXSAVER.toXML(el, outputStreamWriter);
-        outputStreamWriter.close();
+        if (fileEncoding == null || fileEncoding.isEmpty()) {
+            JMXSAVER.toXML(el, out);
+        } else {
+            try (OutputStreamWriter outputStreamWriter = getOutputStreamWriter(out)) {
+                JMXSAVER.toXML(el, outputStreamWriter);
+            }
+        }
     }
 
     // Used by Test code
@@ -344,7 +350,7 @@ public class SaveService {
         // This is effectively the same as saver.toXML(Object, Writer) except we get to provide the DataHolder
         // Don't know why there is no method for this in the XStream class
         try {
-            JTLSAVER.marshal(evt.getResult(), new XppDriver().createWriter(writer), dh);
+            JTLSAVER.marshal(evt.getResult(), STAXDRIVER_SKIP_HEADER.createWriter(writer), dh);
         } catch(RuntimeException e) {
             throw new IllegalArgumentException("Failed marshalling:"+(evt.getResult() != null ? showDebuggingInfo(evt.getResult()) : "null"), e);
         }
@@ -411,7 +417,7 @@ public class SaveService {
         dh.put(RESULTCOLLECTOR_HELPER_OBJECT, resultCollectorHelper); // Allow TestResultWrapper to feed back the samples
         // This is effectively the same as saver.fromXML(InputStream) except we get to provide the DataHolder
         // Don't know why there is no method for this in the XStream class
-        JTLSAVER.unmarshal(new XppDriver().createReader(reader), null, dh);
+        JTLSAVER.unmarshal(STAXDRIVER_SKIP_HEADER.createReader(reader), null, dh);
         inputStreamReader.close();
     }
 
@@ -504,16 +510,6 @@ public class SaveService {
         }
     }
 
-    private static void writeXmlHeader(OutputStreamWriter writer) throws IOException {
-        // Write XML header if we have the charset to use for encoding
-        Charset charset = getFileEncodingCharset();
-        // We do not use getEncoding method of Writer, since that returns
-        // the historical name
-        String header = XML_HEADER.replaceAll("<ph>", charset.name());
-        writer.write(header);
-        writer.write('\n');
-    }
-
 //  Normal output
 //  ---- Debugging information ----
 //  required-type       : org.apache.jorphan.collections.ListedHashTree
diff --git a/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java b/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java
index cbbc3887b4..9ff73f4c8c 100644
--- a/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java
+++ b/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java
@@ -165,7 +165,10 @@ public class SampleResultConverter extends AbstractCollectionConverter {
             writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING);
             try {
                 if (SampleResult.TEXT.equals(res.getDataType())){
-                    writer.setValue(new String(res.getResponseData(), res.getDataEncodingWithDefault()));
+                    byte[] responseData = res.getResponseData();
+                    if (responseData != null && responseData.length > 0) {
+                        writer.setValue(new String(responseData, res.getDataEncodingWithDefault()));
+                    }
                 } else {
                     writer.setValue("Non-TEXT response data, cannot record: (" + res.getDataType() + ")");
                 }
@@ -176,10 +179,7 @@ public class SampleResultConverter extends AbstractCollectionConverter {
             writer.endNode();
         }
         if (save.saveFileName()){
-            writer.startNode(TAG_RESPONSE_FILE);
-            writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING);
-            writer.setValue(res.getResultFileName());
-            writer.endNode();
+            writeString(writer, TAG_RESPONSE_FILE, res.getResultFileName());
         }
     }
 
@@ -356,7 +356,9 @@ public class SampleResultConverter extends AbstractCollectionConverter {
         if (value != null) {
             writer.startNode(tag);
             writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING);
-            writer.setValue(value);
+            if (!value.isEmpty()) {
+                writer.setValue(value);
+            }
             writer.endNode();
         }
     }
diff --git a/src/core/src/main/java/org/apache/jmeter/save/converters/StringPropertyConverter.java b/src/core/src/main/java/org/apache/jmeter/save/converters/StringPropertyConverter.java
index aafbebdf8a..2ff4059a72 100644
--- a/src/core/src/main/java/org/apache/jmeter/save/converters/StringPropertyConverter.java
+++ b/src/core/src/main/java/org/apache/jmeter/save/converters/StringPropertyConverter.java
@@ -48,7 +48,10 @@ public class StringPropertyConverter implements Converter {
     public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext arg2) {
         StringProperty prop = (StringProperty) obj;
         writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName()));
-        writer.setValue(ConversionHelp.encode(prop.getStringValue()));
+        String encoded = ConversionHelp.encode(prop.getStringValue());
+        if (encoded != null && !encoded.isEmpty()) {
+            writer.setValue(encoded);
+        }
     }
 
     /** {@inheritDoc} */
diff --git a/src/core/src/main/java/org/apache/jmeter/util/JMeterUtils.java b/src/core/src/main/java/org/apache/jmeter/util/JMeterUtils.java
index 816f2553f7..2a7c5b9c99 100644
--- a/src/core/src/main/java/org/apache/jmeter/util/JMeterUtils.java
+++ b/src/core/src/main/java/org/apache/jmeter/util/JMeterUtils.java
@@ -59,6 +59,7 @@ import javax.swing.JTextArea;
 import javax.swing.SwingUtilities;
 
 import org.apache.jmeter.gui.GuiPackage;
+import org.apache.jmeter.save.JMeterStaxDriver;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jorphan.gui.JFactory;
 import org.apache.jorphan.gui.JMeterUIDefaults;
@@ -81,6 +82,7 @@ import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
+import com.thoughtworks.xstream.io.xml.StaxDriver;
 import com.thoughtworks.xstream.security.AnyTypePermission;
 import com.thoughtworks.xstream.security.NoTypePermission;
 
@@ -1416,8 +1418,8 @@ public class JMeterUtils implements UnitTestManager {
     /**
      * @return {@link XStream} XStream instance following JMeter security policy
      */
-    public static final XStream createXStream() {
-        XStream xstream = new XStream(new PureJavaReflectionProvider());
+    public static XStream createXStream() {
+        XStream xstream = new XStream(new PureJavaReflectionProvider(), new JMeterStaxDriver());
         JMeterUtils.setupXStreamSecurityPolicy(xstream);
         return xstream;
     }
diff --git a/src/core/src/main/kotlin/org/apache/jmeter/save/JMeterStaxDriver.kt b/src/core/src/main/kotlin/org/apache/jmeter/save/JMeterStaxDriver.kt
new file mode 100644
index 0000000000..fef5c9383a
--- /dev/null
+++ b/src/core/src/main/kotlin/org/apache/jmeter/save/JMeterStaxDriver.kt
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.save
+
+import com.thoughtworks.xstream.io.xml.StaxDriver
+import javax.xml.stream.XMLOutputFactory
+
+public class JMeterStaxDriver(
+    public val xmlHeader: Boolean = true,
+    public val indent: Boolean = true,
+) : StaxDriver() {
+    override fun createOutputFactory(): XMLOutputFactory =
+        XMLOutputFactoryDelegate(super.createOutputFactory(), xmlHeader = xmlHeader, indent = indent)
+}
diff --git a/src/core/src/main/kotlin/org/apache/jmeter/save/XMLOutputFactoryDelegate.kt b/src/core/src/main/kotlin/org/apache/jmeter/save/XMLOutputFactoryDelegate.kt
new file mode 100644
index 0000000000..d2283a47cc
--- /dev/null
+++ b/src/core/src/main/kotlin/org/apache/jmeter/save/XMLOutputFactoryDelegate.kt
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.save
+
+import com.sun.xml.txw2.output.IndentingXMLStreamWriter
+import java.io.OutputStream
+import java.io.Writer
+import javax.xml.stream.XMLEventWriter
+import javax.xml.stream.XMLOutputFactory
+import javax.xml.stream.XMLStreamWriter
+import javax.xml.transform.Result
+
+/**
+ * A custom implementation of `XMLOutputFactory` that delegates operations to another `XMLOutputFactory`
+ * with additional configurations such as optional XML header skipping and indentation.
+ *
+ * This class enhances the behavior of the specified `XMLOutputFactory` by allowing the output
+ * to be customized based on the provided configuration (e.g., whether to include the XML declaration header
+ * or enable indentation for formatted output).
+ *
+ * @constructor Creates an instance of `XMLOutputFactoryDelegate`.
+ * @param delegate The underlying `XMLOutputFactory` to which most operations are delegated.
+ * @param xmlHeader A flag indicating whether to include the XML declaration header in the output.
+ * @param indent A flag indicating whether to enable formatted (indented) output.
+ */
+public class XMLOutputFactoryDelegate(
+    private val delegate: XMLOutputFactory,
+    private val xmlHeader: Boolean,
+    private val indent: Boolean
+) : XMLOutputFactory() {
+    // Methods that wrap with XMLStreamWriterSkipHeader
+
+    private fun XMLStreamWriter.applyXmlStreamWriterConfiguration(): XMLStreamWriter {
+        var result = this
+        if (indent) {
+            result = IndentingXMLStreamWriter(this)
+        }
+        if (!xmlHeader) {
+            result = XMLStreamWriterSkipHeader(result)
+        }
+        return result
+    }
+
+    override fun createXMLStreamWriter(stream: Writer): XMLStreamWriter {
+        return delegate.createXMLStreamWriter(stream).applyXmlStreamWriterConfiguration()
+    }
+
+    override fun createXMLStreamWriter(stream: OutputStream): XMLStreamWriter {
+        return delegate.createXMLStreamWriter(stream).applyXmlStreamWriterConfiguration()
+    }
+
+    override fun createXMLStreamWriter(
+        stream: OutputStream,
+        encoding: String?
+    ): XMLStreamWriter {
+        return delegate.createXMLStreamWriter(stream, encoding).applyXmlStreamWriterConfiguration()
+    }
+
+    override fun createXMLStreamWriter(result: Result): XMLStreamWriter {
+        return delegate.createXMLStreamWriter(result).applyXmlStreamWriterConfiguration()
+    }
+
+    // Pure delegate methods below
+
+    override fun createXMLEventWriter(result: Result): XMLEventWriter {
+        return delegate.createXMLEventWriter(result)
+    }
+
+    override fun createXMLEventWriter(stream: OutputStream): XMLEventWriter {
+        return delegate.createXMLEventWriter(stream)
+    }
+
+    override fun createXMLEventWriter(
+        stream: OutputStream,
+        encoding: String?
+    ): XMLEventWriter {
+        return delegate.createXMLEventWriter(stream, encoding)
+    }
+
+    override fun createXMLEventWriter(stream: Writer): XMLEventWriter {
+        return delegate.createXMLEventWriter(stream)
+    }
+
+    override fun setProperty(name: String, value: Any?) {
+        return delegate.setProperty(name, value)
+    }
+
+    override fun getProperty(name: String): Any {
+        return delegate.getProperty(name)
+    }
+
+    override fun isPropertySupported(name: String): Boolean {
+        return delegate.isPropertySupported(name)
+    }
+}
diff --git a/src/core/src/main/kotlin/org/apache/jmeter/save/XMLStreamWriterSkipHeader.kt b/src/core/src/main/kotlin/org/apache/jmeter/save/XMLStreamWriterSkipHeader.kt
new file mode 100644
index 0000000000..ec91f003ee
--- /dev/null
+++ b/src/core/src/main/kotlin/org/apache/jmeter/save/XMLStreamWriterSkipHeader.kt
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.save
+
+import javax.xml.stream.XMLStreamWriter
+
+/**
+ * A custom implementation of `XMLStreamWriter` that skips writing the XML declaration header.
+ *
+ * @constructor Creates an instance of `XMLStreamWriterSkipHeader` that wraps the given [delegate] XMLStreamWriter.
+ * @param delegate The underlying `XMLStreamWriter` to which operations, except writing the XML header, are delegated.
+ */
+public class XMLStreamWriterSkipHeader(
+    private val delegate: XMLStreamWriter
+) : XMLStreamWriter by delegate {
+    override fun writeStartDocument() {
+    }
+
+    override fun writeStartDocument(version: String?) {
+    }
+
+    override fun writeStartDocument(encoding: String?, version: String?) {
+    }
+}
diff --git a/src/dist-check/build.gradle.kts b/src/dist-check/build.gradle.kts
index adbbd9faf6..c83b94cf7a 100644
--- a/src/dist-check/build.gradle.kts
+++ b/src/dist-check/build.gradle.kts
@@ -38,6 +38,12 @@ dependencies {
     testImplementation("com.fasterxml.jackson.core:jackson-databind") {
         because("It is used in ReportGeneratorSpec and HtmlReportGeneratorSpec")
     }
+    testImplementation("org.apache.santuario:xmlsec:4.0.4") {
+        because("XML canonicalization for comparing XML in tests")
+    }
+    testImplementation("org.eclipse.jgit:org.eclipse.jgit:6.10.1.202505221210-r") {
+        because("Histogram diff for readable XML comparison output in tests")
+    }
 
     extraTestDependencies(platform(projects.src.bomThirdparty))
     extraTestDependencies(platform(projects.src.bomTesting))
diff --git a/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java b/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java
index 58f8866455..97ced70855 100644
--- a/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java
+++ b/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java
@@ -22,23 +22,29 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.List;
+import java.util.regex.Pattern;
 
 import org.apache.jmeter.junit.JMeterTestCase;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jorphan.collections.HashTree;
+import org.apache.xml.security.Init;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.eclipse.jgit.diff.DiffFormatter;
+import org.eclipse.jgit.diff.EditList;
+import org.eclipse.jgit.diff.HistogramDiff;
+import org.eclipse.jgit.diff.RawText;
+import org.eclipse.jgit.diff.RawTextComparator;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.FieldSource;
 
 public class TestSaveService extends JMeterTestCase {
 
@@ -83,6 +89,10 @@ public class TestSaveService extends JMeterTestCase {
 
     private static final boolean saveOut = JMeterUtils.getPropDefault("testsaveservice.saveout", false);
 
+    @BeforeAll
+    static void initXmlSecurity() {
+        Init.init();
+    }
 
     @Test
     public void testPROPVERSION() {
@@ -93,120 +103,66 @@ public class TestSaveService extends JMeterTestCase {
         );
     }
 
-    @Test
-    public void testLoadAndSave() throws Exception {
-        boolean failed = false; // Did a test fail?
-
-        for (final String fileName : FILES) {
-            final File testFile = findTestFile("testfiles/" + fileName);
-            final File savedFile = findTestFile("testfiles/Saved" + fileName);
-            failed |= loadAndSave(testFile, fileName, true, savedFile);
-        }
-        for (final String fileName : FILES_LINES) {
-            final File testFile = findTestFile("testfiles/" + fileName);
-            final File savedFile = findTestFile("testfiles/Saved" + fileName);
-            failed |= loadAndSave(testFile, fileName, false, savedFile);
-        }
-        if (failed) // TODO make these separate tests?
-        {
-            fail("One or more failures detected");
-        }
-    }
-
-    private static boolean loadAndSave(File testFile, String fileName, boolean checkSize, File savedFile) throws Exception {
-
-        boolean failed = false;
-
-        final FileStats origStats = getFileStats(testFile);
-        final FileStats savedStats = getFileStats(savedFile);
-
+    @ParameterizedTest
+    @FieldSource({"FILES", "FILES_LINES"})
+    void loadAndSave(String fileName) throws Exception {
+        File testFile = findTestFile("testfiles/" + fileName);
         ByteArrayOutputStream out = new ByteArrayOutputStream(Math.toIntExact(testFile.length()));
-        try {
+        try (out) {
             HashTree tree = SaveService.loadTree(testFile);
             SaveService.saveTree(tree, out);
-        } finally {
-            out.close(); // Make sure all the data is flushed out
         }
+        byte[] resavedXml = out.toByteArray();
+        // Make sure all the data is flushed out
+
+        // Compare XML content using normalized form for better diff output
+        Path testFilePath = testFile.toPath();
+        Path expectedOutput = testFilePath.resolveSibling(testFilePath.getFileName().toString().replace(".jmx", ".expected.jmx"));
+        Path expectedFilePath = Files.exists(expectedOutput) ? expectedOutput : testFilePath;
+
+        String expectedXml = normalizeXml(
+                Files.readAllBytes(
+                        expectedFilePath
+                )
+        );
+        String actualXml = normalizeXml(resavedXml);
 
-        final FileStats compareStats = savedStats == FileStats.NO_STATS ? origStats : savedStats;
-
-        final FileStats outputStats;
-        try (ByteArrayInputStream ins = new ByteArrayInputStream(out.toByteArray());
-             Reader insReader = new InputStreamReader(ins, Charset.defaultCharset());
-             BufferedReader bufferedReader = new BufferedReader(insReader)) {
-            outputStats = computeFileStats(bufferedReader);
-        }
-        // We only check the length of the result. Comparing the
-        // actual result (out.toByteArray==original) will usually
-        // fail, because the order of the properties within each
-        // test element may change. Comparing the lengths should be
-        // enough to detect most problem cases...
-        if (checkSize && !compareStats.isSameSize(outputStats) || !compareStats.hasSameLinesCount(outputStats)) {
-            failed = true;
-            System.out.println();
-            System.out.println("Loading file testfiles/" + fileName + " and "
-                    + "saving it back changes its size from " + compareStats.size + " to " + outputStats.size + ".");
-            if (!origStats.hasSameLinesCount(outputStats)) {
-                System.out.println("Number of lines changes from " + compareStats.lines + " to " + outputStats.lines);
-            }
-            if (saveOut) {
-                final File outFile = findTestFile("testfiles/" + fileName + ".out");
-                System.out.println("Write " + outFile);
-                try (FileOutputStream outf = new FileOutputStream(outFile)) {
-                    outf.write(out.toByteArray());
-                }
-                System.out.println("Wrote " + outFile);
+        if (saveOut) {
+            if (!expectedXml.equals(actualXml)) {
+                Files.write(expectedOutput, resavedXml);
             }
+            return;
         }
-
-        // Note this test will fail if a property is added or
-        // removed to any of the components used in the test
-        // files. The way to solve this is to appropriately change
-        // the test file.
-        return failed;
-    }
-
-    private static FileStats getFileStats(File testFile) throws IOException,
-            FileNotFoundException {
-        if (testFile == null || !testFile.exists()) {
-            return FileStats.NO_STATS;
-        }
-        try (FileInputStream fis = new FileInputStream(testFile);
-             InputStreamReader fileReader = new InputStreamReader(fis, Charset.defaultCharset());
-                BufferedReader bufferedReader = new BufferedReader(fileReader)) {
-            return computeFileStats(bufferedReader);
-        }
-    }
-
-    /**
-     * Calculate size and line count ignoring EOL and
-     * "jmeterTestPlan" element which may vary because of
-     * different attributes/attribute lengths.
-     */
-    private static FileStats computeFileStats(BufferedReader br) throws IOException {
-        int length = 0;
-        int lines = 0;
-        String line;
-        while ((line = br.readLine()) != null) {
-            lines++;
-            if (!line.startsWith("<jmeterTestPlan")) {
-                length += line.length();
-            }
-        }
-        return new FileStats(length, lines);
+        assertEquals(
+                expectedXml,
+                actualXml,
+                () -> {
+                    String diff = computeHistogramDiff(expectedXml, actualXml);
+                    StringBuilder message = new StringBuilder();
+                    message.append("JMX file should be the same after load and save. ");
+                    message.append("Comparing with ").append(expectedFilePath).append(". ");
+                    message.append(" (diff is ").append(diff.length()).append(" chars, ")
+                            .append(Math.round(diff.length() * 100.0 / expectedXml.length())).append("% of original)");
+
+                    // Omit diff it is too large
+                    if (diff.length() < expectedXml.length() * 0.8) {
+                        message.append("\nDiff:\n").append(diff);
+                    }
+                    return message.toString();
+                }
+        );
     }
 
-    @Test
-    public void testLoad() throws Exception {
-        for (String fileName : FILES_LOAD_ONLY) {
-            File file = findTestFile("testfiles/" + fileName);
-            try {
-                HashTree tree = SaveService.loadTree(file);
-                assertNotNull(tree);
-            } catch (IllegalArgumentException ex) {
-                ex.addSuppressed(new Throwable("fileName=" + file.getAbsolutePath()));
-                throw ex;
-            }
+    @ParameterizedTest
+    @FieldSource("FILES_LOAD_ONLY")
+    public void testLoad(String fileName) throws Exception {
+        File file = findTestFile("testfiles/" + fileName);
+        try {
+            HashTree tree = SaveService.loadTree(file);
+            assertNotNull(tree);
+        } catch (IllegalArgumentException ex) {
+            ex.addSuppressed(new Throwable("fileName=" + file.getAbsolutePath()));
+            throw ex;
         }
     }
 
@@ -218,29 +174,57 @@ public class TestSaveService extends JMeterTestCase {
         }
     }
 
-    private static class FileStats {
-        int size;
-        int lines;
+    /**
+     * Pattern to match the jmeterTestPlan root element with all its attributes.
+     * These attributes (jmeter version, properties version) change between JMeter versions
+     * and should be ignored when comparing XML content.
+     */
+    private static final Pattern JMETER_TEST_PLAN_PATTERN = Pattern.compile(
+            "<jmeterTestPlan[^>]*>"
+    );
 
-        final static FileStats NO_STATS = new FileStats(-1, -1);
+    /**
+     * Normalizes XML for comparison using W3C Canonical XML (C14N).
+     * This sorts attributes alphabetically and normalizes whitespace.
+     * Also normalizes the jmeterTestPlan root element to ignore version differences.
+     */
+    private static String normalizeXml(byte[] xmlBytes) throws Exception {
+        Canonicalizer c14n = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        c14n.canonicalize(xmlBytes, out, true);
 
-        public FileStats(int size, int lines) {
-            this.size = size;
-            this.lines = lines;
-        }
+        // Normalize the jmeterTestPlan element to ignore version-specific attributes
+        String xml = out.toString(StandardCharsets.UTF_8);
+        xml = JMETER_TEST_PLAN_PATTERN.matcher(xml).replaceFirst("<jmeterTestPlan>");
 
-        public boolean isSameSize(FileStats other) {
-            if (other == null) {
-                return false;
-            }
-            return size == other.size;
-        }
+        return xml;
+    }
+
+
+    private static String computeHistogramDiff(String expected, String actual) {
+        return computeHistogramDiff(
+                expected.getBytes(StandardCharsets.UTF_8),
+                actual.getBytes(StandardCharsets.UTF_8)
+        );
+    }
+
+    /**
+     * Computes a histogram diff between expected and actual text, similar to git diff.
+     */
+    private static String computeHistogramDiff(byte[] expected, byte[] actual) {
+        try {
+            RawText expectedText = new RawText(expected);
+            RawText actualText = new RawText(actual);
+
+            EditList edits = new HistogramDiff().diff(RawTextComparator.DEFAULT, expectedText, actualText);
 
-        public boolean hasSameLinesCount(FileStats other) {
-            if (other == null) {
-                return false;
+            ByteArrayOutputStream diffOutput = new ByteArrayOutputStream();
+            try (DiffFormatter formatter = new DiffFormatter(diffOutput)) {
+                formatter.format(edits, expectedText, actualText);
             }
-            return lines == other.lines;
+            return diffOutput.toString(StandardCharsets.UTF_8);
+        } catch (IOException e) {
+            return "Failed to compute diff: " + e.getMessage();
         }
     }
 }
diff --git a/src/dist/src/dist/expected_release_jars.csv b/src/dist/src/dist/expected_release_jars.csv
index e50e703032..931e086ec4 100644
--- a/src/dist/src/dist/expected_release_jars.csv
+++ b/src/dist/src/dist/expected_release_jars.csv
@@ -109,7 +109,6 @@
 519087,mail-1.5.0-b01.jar
 120438,miglayout-core-11.4.2.jar
 23287,miglayout-swing-11.4.2.jar
-29680,mxparser-1.2.2.jar
 99796,neo4j-bolt-connection-10.1.0.jar
 320489,neo4j-bolt-connection-netty-10.1.0.jar
 27442,neo4j-bolt-connection-pooled-10.1.0.jar
@@ -149,15 +148,17 @@
 5783933,Saxon-HE-12.9.jar
 283536,serializer-2.7.3.jar
 69908,slf4j-api-2.0.17.jar
+195922,stax2-api-4.2.2.jar
 10192,swing-extensions-laf-support-0.1.3.jar
 2539,swing-extensions-visual-padding-0.1.3.jar
 778543,tika-core-3.2.3.jar
+73265,txw2-4.0.6.jar
 173935,unbescape-1.1.6.RELEASE.jar
+1608803,woodstox-core-7.1.0.jar
 3455761,xalan-2.7.3.jar
 220536,xml-apis-1.4.01.jar
 85686,xml-apis-ext-1.3.04.jar
 686441,xmlgraphics-commons-2.11.jar
-7188,xmlpull-1.1.3.1.jar
 1033122,xmlresolver-5.3.3-data.jar
 167889,xmlresolver-5.3.3.jar
 646504,xstream-1.4.21.jar
diff --git a/src/protocol/http/build.gradle.kts b/src/protocol/http/build.gradle.kts
index 20961567e4..af6b3482f5 100644
--- a/src/protocol/http/build.gradle.kts
+++ b/src/protocol/http/build.gradle.kts
@@ -29,6 +29,7 @@ dependencies {
 
     api("com.thoughtworks.xstream:xstream") {
         because("HTTPResultConverter uses XStream in public API")
+        exclude("io.github.x-stream", "mxparser")
     }
 
     compileOnly("javax.activation:javax.activation-api") {


(jmeter) 03/04: test: add expected files for TestSaveService

Posted by vl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 681db6b79f6f09ee1cf43e3cd3c8ea395f7b92b9
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Fri Nov 21 16:02:38 2025 +0300

    test: add expected files for TestSaveService
    
    It enables tolerating small changes like "different order of xml tags"
    while still detecting save service issues.
---
 bin/testfiles/GenTest210.expected.jmx          | 1479 +++++++++++++++++++++++
 bin/testfiles/GenTest25.expected.jmx           | 1396 ++++++++++++++++++++++
 bin/testfiles/GenTest251.expected.jmx          | 1394 ++++++++++++++++++++++
 bin/testfiles/GenTest26.expected.jmx           | 1431 +++++++++++++++++++++++
 bin/testfiles/GenTest27.expected.jmx           | 1393 ++++++++++++++++++++++
 bin/testfiles/GenTest27_original.expected.jmx  | 1415 ++++++++++++++++++++++
 bin/testfiles/GenTest2_13.expected.jmx         | 1495 ++++++++++++++++++++++++
 bin/testfiles/GenTest3_0.expected.jmx          | 1453 +++++++++++++++++++++++
 bin/testfiles/GuiTest.expected.jmx             |  794 +++++++++++++
 bin/testfiles/GuiTest231.expected.jmx          | 1153 ++++++++++++++++++
 bin/testfiles/GuiTest231_original.expected.jmx | 1222 +++++++++++++++++++
 bin/testfiles/ProxyServerTestPlan.expected.jmx |   44 +
 12 files changed, 14669 insertions(+)

diff --git a/bin/testfiles/GenTest210.expected.jmx b/bin/testfiles/GenTest210.expected.jmx
new file mode 100644
index 0000000000..e19dd7be0a
--- /dev/null
+++ b/bin/testfiles/GenTest210.expected.jmx
@@ -0,0 +1,1479 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="GuiTest 2.10" enabled="true">
+      <stringProp name="TestPlan.comments">Test Plan including all test elements in JMeter 2.19</stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337352661000</longProp>
+        <longProp name="ThreadGroup.end_time">1337352661000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </SetupThreadGroup>
+      <hashTree/>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337300621000</longProp>
+        <longProp name="ThreadGroup.end_time">1337300621000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logic Controllers" enabled="true"/>
+        <hashTree>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="transactionIsolation">DEFAULT</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
+            <stringProp name="endIndex"/>
+            <stringProp name="preload">True</stringProp>
+            <stringProp name="startIndex"/>
+          </KeystoreConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+            <stringProp name="cacheKey"/>
+          </JSR223Timer>
+          <hashTree/>
+          <PoissonRandomTimer guiclass="PoissonRandomTimerGui" testclass="PoissonRandomTimer" testname="Poisson Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100</stringProp>
+          </PoissonRandomTimer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="JDBC PreProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+            <stringProp name="queryTimeout"/>
+          </JDBCPreProcessor>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+            <stringProp name="cacheKey"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <RegExUserParameters guiclass="RegExUserParametersGui" testclass="RegExUserParameters" testname="RegEx User Parameters" enabled="true">
+            <stringProp name="RegExUserParameters.regex_ref_name"/>
+            <stringProp name="RegExUserParameters.param_names_gr_nr"/>
+            <stringProp name="RegExUserParameters.param_values_gr_nr"/>
+          </RegExUserParameters>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+            <stringProp name="queryTimeout"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <elementProp name="jms.jmsProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+            <stringProp name="cacheKey"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="OS Process Sampler" enabled="true">
+            <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
+            <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
+            <stringProp name="SystemSampler.command"/>
+            <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SystemSampler.directory"/>
+          </SystemSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <HtmlExtractor guiclass="HtmlExtractorGui" testclass="HtmlExtractor" testname="CSS/JQuery Extractor" enabled="true">
+            <stringProp name="HtmlExtractor.refname"/>
+            <stringProp name="HtmlExtractor.expr"/>
+            <stringProp name="HtmlExtractor.attribute"/>
+            <stringProp name="HtmlExtractor.default"/>
+            <stringProp name="HtmlExtractor.match_number"/>
+            <stringProp name="HtmlExtractor.extractor_impl"/>
+          </HtmlExtractor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySamplerProperties">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugPostProcessor>
+          <hashTree/>
+          <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+            <stringProp name="queryTimeout"/>
+          </JDBCPostProcessor>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+            <stringProp name="cacheKey"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+            <stringProp name="cacheKey"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+            <stringProp name="cacheKey"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337352666000</longProp>
+        <longProp name="ThreadGroup.end_time">1337352666000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </PostThreadGroup>
+      <hashTree/>
+      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+    <WorkBench guiclass="WorkBenchGui" testclass="WorkBench" testname="WorkBench" enabled="true">
+      <boolProp name="WorkBench.save">true</boolProp>
+    </WorkBench>
+    <hashTree>
+      <HttpMirrorControl guiclass="HttpMirrorControlGui" testclass="HttpMirrorControl" testname="HTTP Mirror Server" enabled="true">
+        <stringProp name="HttpMirrorControlGui.port">8081</stringProp>
+        <stringProp name="HttpMirrorControlGui.maxPoolSize">0</stringProp>
+        <stringProp name="HttpMirrorControlGui.maxQueueSize">25</stringProp>
+      </HttpMirrorControl>
+      <hashTree/>
+      <ProxyControl guiclass="ProxyControlGui" testclass="ProxyControl" testname="HTTP(S) Test Script Recorder" enabled="true">
+        <stringProp name="ProxyControlGui.port">8080</stringProp>
+        <collectionProp name="ProxyControlGui.exclude_list"/>
+        <collectionProp name="ProxyControlGui.include_list"/>
+        <boolProp name="ProxyControlGui.capture_http_headers">true</boolProp>
+        <intProp name="ProxyControlGui.grouping_mode">0</intProp>
+        <boolProp name="ProxyControlGui.add_assertion">false</boolProp>
+        <stringProp name="ProxyControlGui.sampler_type_name"/>
+        <boolProp name="ProxyControlGui.sampler_redirect_automatically">false</boolProp>
+        <boolProp name="ProxyControlGui.sampler_follow_redirects">true</boolProp>
+        <boolProp name="ProxyControlGui.use_keepalive">true</boolProp>
+        <boolProp name="ProxyControlGui.sampler_download_images">false</boolProp>
+        <boolProp name="ProxyControlGui.regex_match">false</boolProp>
+        <stringProp name="ProxyControlGui.content_type_include"/>
+        <stringProp name="ProxyControlGui.content_type_exclude"/>
+      </ProxyControl>
+      <hashTree/>
+      <ConfigTestElement guiclass="PropertyControlGui" testclass="ConfigTestElement" testname="Property Display" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/bin/testfiles/GenTest25.expected.jmx b/bin/testfiles/GenTest25.expected.jmx
new file mode 100644
index 0000000000..19c50aa198
--- /dev/null
+++ b/bin/testfiles/GenTest25.expected.jmx
@@ -0,0 +1,1396 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan for 2.5" enabled="true">
+      <stringProp name="TestPlan.comments"/>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337360672000</longProp>
+        <longProp name="ThreadGroup.end_time">1337360672000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </SetupThreadGroup>
+      <hashTree/>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337360420000</longProp>
+        <longProp name="ThreadGroup.end_time">1337360420000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Controllers" enabled="true"/>
+        <hashTree>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Timer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="scriptLanguage">beanbasic</stringProp>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+          </BSFSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="WebService(SOAP) Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="WebserviceSampler.wsdl_url"/>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <stringProp name="Soap.Action"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="WebServiceSampler.xml_data_file"/>
+            <stringProp name="WebServiceSampler.xml_path_loc"/>
+            <stringProp name="WebserviceSampler.timeout"/>
+            <stringProp name="WebServiceSampler.memory_cache">true</stringProp>
+            <stringProp name="WebServiceSampler.read_response">false</stringProp>
+            <stringProp name="WebServiceSampler.use_proxy">false</stringProp>
+            <stringProp name="WebServiceSampler.proxy_host"/>
+            <stringProp name="WebServiceSampler.proxy_port"/>
+          </ConfigTestElement>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true"/>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Graph Full Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337360665000</longProp>
+        <longProp name="ThreadGroup.end_time">1337360665000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </PostThreadGroup>
+      <hashTree/>
+      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/bin/testfiles/GenTest251.expected.jmx b/bin/testfiles/GenTest251.expected.jmx
new file mode 100644
index 0000000000..63062f1236
--- /dev/null
+++ b/bin/testfiles/GenTest251.expected.jmx
@@ -0,0 +1,1394 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan for 2.5.1" enabled="true">
+      <stringProp name="TestPlan.comments"/>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337360547000</longProp>
+        <longProp name="ThreadGroup.end_time">1337360547000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </SetupThreadGroup>
+      <hashTree/>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337360522000</longProp>
+        <longProp name="ThreadGroup.end_time">1337360522000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Controllers" enabled="true"/>
+        <hashTree>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Timer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="scriptLanguage">beanbasic</stringProp>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+          </BSFSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="WebService(SOAP) Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="WebserviceSampler.wsdl_url"/>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <stringProp name="Soap.Action"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="WebServiceSampler.xml_data_file"/>
+            <stringProp name="WebServiceSampler.xml_path_loc"/>
+            <stringProp name="WebserviceSampler.timeout"/>
+            <stringProp name="WebServiceSampler.memory_cache">true</stringProp>
+            <stringProp name="WebServiceSampler.read_response">false</stringProp>
+            <stringProp name="WebServiceSampler.use_proxy">false</stringProp>
+            <stringProp name="WebServiceSampler.proxy_host"/>
+            <stringProp name="WebServiceSampler.proxy_port"/>
+          </ConfigTestElement>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true"/>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Graph Full Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337360555000</longProp>
+        <longProp name="ThreadGroup.end_time">1337360555000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </PostThreadGroup>
+      <hashTree/>
+      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/bin/testfiles/GenTest26.expected.jmx b/bin/testfiles/GenTest26.expected.jmx
new file mode 100644
index 0000000000..766d398d0e
--- /dev/null
+++ b/bin/testfiles/GenTest26.expected.jmx
@@ -0,0 +1,1431 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan for 2.6" enabled="true">
+      <stringProp name="TestPlan.comments"/>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337361781000</longProp>
+        <longProp name="ThreadGroup.end_time">1337361781000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </SetupThreadGroup>
+      <hashTree/>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337361769000</longProp>
+        <longProp name="ThreadGroup.end_time">1337361769000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Controllers" enabled="true"/>
+        <hashTree>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="transactionIsolation">DEFAULT</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
+            <stringProp name="endIndex"/>
+            <stringProp name="preload">True</stringProp>
+            <stringProp name="startIndex"/>
+          </KeystoreConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Timer>
+          <hashTree/>
+          <PoissonRandomTimer guiclass="PoissonRandomTimerGui" testclass="PoissonRandomTimer" testname="Poisson Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100</stringProp>
+          </PoissonRandomTimer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="JDBC PreProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPreProcessor>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="WebService(SOAP) Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="WebserviceSampler.wsdl_url"/>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <stringProp name="Soap.Action"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="WebServiceSampler.xml_data_file"/>
+            <stringProp name="WebServiceSampler.xml_path_loc"/>
+            <stringProp name="WebserviceSampler.timeout"/>
+            <stringProp name="WebServiceSampler.memory_cache">true</stringProp>
+            <stringProp name="WebServiceSampler.read_response">false</stringProp>
+            <stringProp name="WebServiceSampler.use_proxy">false</stringProp>
+            <stringProp name="WebServiceSampler.proxy_host"/>
+            <stringProp name="WebServiceSampler.proxy_port"/>
+          </ConfigTestElement>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySamplerProperties">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugPostProcessor>
+          <hashTree/>
+          <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPostProcessor>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Graph Full Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337361784000</longProp>
+        <longProp name="ThreadGroup.end_time">1337361784000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </PostThreadGroup>
+      <hashTree/>
+      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/bin/testfiles/GenTest27.expected.jmx b/bin/testfiles/GenTest27.expected.jmx
new file mode 100644
index 0000000000..ccce46a57b
--- /dev/null
+++ b/bin/testfiles/GenTest27.expected.jmx
@@ -0,0 +1,1393 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="GuiTest 2.7" enabled="true">
+      <stringProp name="TestPlan.comments">Test Plan including all test elements in JMeter 2.7</stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337352661000</longProp>
+        <longProp name="ThreadGroup.end_time">1337352661000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </SetupThreadGroup>
+      <hashTree/>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337300621000</longProp>
+        <longProp name="ThreadGroup.end_time">1337300621000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logic Controllers" enabled="true"/>
+        <hashTree>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="transactionIsolation">DEFAULT</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
+            <stringProp name="endIndex"/>
+            <stringProp name="preload">True</stringProp>
+            <stringProp name="startIndex"/>
+          </KeystoreConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Timer>
+          <hashTree/>
+          <PoissonRandomTimer guiclass="PoissonRandomTimerGui" testclass="PoissonRandomTimer" testname="Poisson Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100</stringProp>
+          </PoissonRandomTimer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="JDBC PreProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPreProcessor>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <elementProp name="jms.jmsProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="OS Process Sampler" enabled="true">
+            <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
+            <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
+            <stringProp name="SystemSampler.command"/>
+            <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SystemSampler.directory"/>
+          </SystemSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySamplerProperties">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugPostProcessor>
+          <hashTree/>
+          <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPostProcessor>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337352666000</longProp>
+        <longProp name="ThreadGroup.end_time">1337352666000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </PostThreadGroup>
+      <hashTree/>
+      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/bin/testfiles/GenTest27_original.expected.jmx b/bin/testfiles/GenTest27_original.expected.jmx
new file mode 100644
index 0000000000..5ca9fed3f8
--- /dev/null
+++ b/bin/testfiles/GenTest27_original.expected.jmx
@@ -0,0 +1,1415 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="GuiTest 2.7" enabled="true">
+      <stringProp name="TestPlan.comments">Test Plan including all test elements in JMeter 2.7</stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337352661000</longProp>
+        <longProp name="ThreadGroup.end_time">1337352661000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </SetupThreadGroup>
+      <hashTree/>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337300621000</longProp>
+        <longProp name="ThreadGroup.end_time">1337300621000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Logic Controllers" enabled="true"/>
+        <hashTree>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="transactionIsolation">DEFAULT</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
+            <stringProp name="endIndex"/>
+            <stringProp name="preload">True</stringProp>
+            <stringProp name="startIndex"/>
+          </KeystoreConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Timer>
+          <hashTree/>
+          <PoissonRandomTimer guiclass="PoissonRandomTimerGui" testclass="PoissonRandomTimer" testname="Poisson Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100</stringProp>
+          </PoissonRandomTimer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="JDBC PreProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPreProcessor>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <elementProp name="jms.jmsProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="OS Process Sampler" enabled="true">
+            <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
+            <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
+            <stringProp name="SystemSampler.command"/>
+            <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SystemSampler.directory"/>
+          </SystemSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="WebService(SOAP) Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="WebserviceSampler.wsdl_url"/>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <stringProp name="Soap.Action"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="WebServiceSampler.xml_data_file"/>
+            <stringProp name="WebServiceSampler.xml_path_loc"/>
+            <stringProp name="WebserviceSampler.timeout"/>
+            <stringProp name="WebServiceSampler.memory_cache">true</stringProp>
+            <stringProp name="WebServiceSampler.read_response">false</stringProp>
+            <stringProp name="WebServiceSampler.use_proxy">false</stringProp>
+            <stringProp name="WebServiceSampler.proxy_host"/>
+            <stringProp name="WebServiceSampler.proxy_port"/>
+          </ConfigTestElement>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySamplerProperties">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugPostProcessor>
+          <hashTree/>
+          <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPostProcessor>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">2</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>true</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1337352666000</longProp>
+        <longProp name="ThreadGroup.end_time">1337352666000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </PostThreadGroup>
+      <hashTree/>
+      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/bin/testfiles/GenTest2_13.expected.jmx b/bin/testfiles/GenTest2_13.expected.jmx
new file mode 100644
index 0000000000..a7e34b2ca2
--- /dev/null
+++ b/bin/testfiles/GenTest2_13.expected.jmx
@@ -0,0 +1,1495 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="6.0.0-SNAPSHOT a782287">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Generator2.13" enabled="true">
+      <stringProp name="TestPlan.comments"/>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"/>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <longProp name="ThreadGroup.start_time">1457798199000</longProp>
+        <longProp name="ThreadGroup.end_time">1457798199000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"/>
+        <stringProp name="ThreadGroup.delay"/>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Controllers" enabled="true"/>
+        <hashTree>
+          <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Critical Section Controller" enabled="true">
+            <stringProp name="CriticalSectionController.lockName">global_lock</stringProp>
+          </CriticalSectionController>
+          <hashTree/>
+          <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
+            <stringProp name="ForeachController.inputVal"/>
+            <stringProp name="ForeachController.returnVal"/>
+            <boolProp name="ForeachController.useSeparator">true</boolProp>
+          </ForeachController>
+          <hashTree/>
+          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+            <stringProp name="IfController.condition"/>
+            <boolProp name="IfController.evaluateAll">false</boolProp>
+          </IfController>
+          <hashTree/>
+          <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
+            <stringProp name="IncludeController.includepath"/>
+          </IncludeController>
+          <hashTree/>
+          <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </InterleaveControl>
+          <hashTree/>
+          <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+            <boolProp name="LoopController.continue_forever">true</boolProp>
+            <stringProp name="LoopController.loops">1</stringProp>
+          </LoopController>
+          <hashTree/>
+          <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
+          <hashTree/>
+          <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+          <hashTree/>
+          <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
+            <intProp name="InterleaveControl.style">1</intProp>
+          </RandomController>
+          <hashTree/>
+          <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+          <hashTree/>
+          <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
+          <hashTree/>
+          <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
+            <stringProp name="RunTime.seconds">1</stringProp>
+          </RunTime>
+          <hashTree/>
+          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+          <hashTree/>
+          <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+            <stringProp name="SwitchController.value"/>
+          </SwitchController>
+          <hashTree/>
+          <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
+            <intProp name="ThroughputController.style">0</intProp>
+            <boolProp name="ThroughputController.perThread">true</boolProp>
+            <intProp name="ThroughputController.maxThroughput">1</intProp>
+            <FloatProperty>
+              <name>ThroughputController.percentThroughput</name>
+              <value>100.0</value>
+              <savedValue>0.0</savedValue>
+            </FloatProperty>
+          </ThroughputController>
+          <hashTree/>
+          <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
+            <boolProp name="TransactionController.includeTimers">false</boolProp>
+            <boolProp name="TransactionController.parent">false</boolProp>
+          </TransactionController>
+          <hashTree/>
+          <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
+            <stringProp name="WhileController.condition"/>
+          </WhileController>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/>
+        <hashTree>
+          <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
+            <stringProp name="CounterConfig.start"/>
+            <stringProp name="CounterConfig.end"/>
+            <stringProp name="CounterConfig.incr"/>
+            <stringProp name="CounterConfig.name"/>
+            <stringProp name="CounterConfig.format"/>
+            <boolProp name="CounterConfig.per_user">false</boolProp>
+          </CounterConfig>
+          <hashTree/>
+          <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
+            <stringProp name="delimiter">,</stringProp>
+            <stringProp name="fileEncoding"/>
+            <stringProp name="filename"/>
+            <boolProp name="quotedData">false</boolProp>
+            <boolProp name="recycle">true</boolProp>
+            <stringProp name="shareMode">shareMode.all</stringProp>
+            <boolProp name="stopThread">false</boolProp>
+            <stringProp name="variableNames"/>
+          </CSVDataSet>
+          <hashTree/>
+          <DNSCacheManager guiclass="DNSCachePanel" testclass="DNSCacheManager" testname="DNS Cache Manager" enabled="true">
+            <collectionProp name="DNSCacheManager.servers"/>
+            <boolProp name="DNSCacheManager.clearEachIteration">false</boolProp>
+            <boolProp name="DNSCacheManager.isCustomResolver">false</boolProp>
+          </DNSCacheManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+            <collectionProp name="AuthManager.auth_list"/>
+          </AuthManager>
+          <hashTree/>
+          <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+            <boolProp name="clearEachIteration">false</boolProp>
+            <boolProp name="useExpires">false</boolProp>
+          </CacheManager>
+          <hashTree/>
+          <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+            <collectionProp name="CookieManager.cookies"/>
+            <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+          </CookieManager>
+          <hashTree/>
+          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+            <collectionProp name="HeaderManager.headers"/>
+          </HeaderManager>
+          <hashTree/>
+          <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaConfig>
+          <hashTree/>
+          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
+            <boolProp name="autocommit">true</boolProp>
+            <stringProp name="checkQuery">Select 1</stringProp>
+            <stringProp name="connectionAge">5000</stringProp>
+            <stringProp name="dataSource"/>
+            <stringProp name="dbUrl"/>
+            <stringProp name="driver"/>
+            <boolProp name="keepAlive">true</boolProp>
+            <stringProp name="password"/>
+            <stringProp name="poolMax">10</stringProp>
+            <stringProp name="timeout">10000</stringProp>
+            <stringProp name="transactionIsolation">DEFAULT</stringProp>
+            <stringProp name="trimInterval">60000</stringProp>
+            <stringProp name="username"/>
+          </JDBCDataSource>
+          <hashTree/>
+          <KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
+            <stringProp name="clientCertAliasVarName"/>
+            <stringProp name="endIndex"/>
+            <stringProp name="preload">True</stringProp>
+            <stringProp name="startIndex"/>
+          </KeystoreConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </ConfigTestElement>
+          <hashTree/>
+          <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
+            <stringProp name="maximumValue"/>
+            <stringProp name="minimumValue">1</stringProp>
+            <stringProp name="outputFormat"/>
+            <boolProp name="perThread">false</boolProp>
+            <stringProp name="randomSeed"/>
+            <stringProp name="variableName"/>
+          </RandomVariableConfig>
+          <hashTree/>
+          <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
+          <hashTree/>
+          <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <boolProp name="TCPSampler.closeConnection">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </Arguments>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/>
+        <hashTree>
+          <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellTimer>
+          <hashTree/>
+          <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFTimer>
+          <hashTree/>
+          <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
+            <stringProp name="calcMode">calcMode.1</stringProp>
+            <doubleProp>
+              <name>throughput</name>
+              <value>0.0</value>
+              <savedValue>0.0</savedValue>
+            </doubleProp>
+          </ConstantThroughputTimer>
+          <hashTree/>
+          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+          </ConstantTimer>
+          <hashTree/>
+          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </GaussianRandomTimer>
+          <hashTree/>
+          <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
+            <stringProp name="cacheKey"/>
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Timer>
+          <hashTree/>
+          <PoissonRandomTimer guiclass="PoissonRandomTimerGui" testclass="PoissonRandomTimer" testname="Poisson Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">300</stringProp>
+            <stringProp name="RandomTimer.range">100</stringProp>
+          </PoissonRandomTimer>
+          <hashTree/>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+            <intProp name="groupSize">0</intProp>
+            <longProp name="timeoutInMs">0</longProp>
+          </SyncTimer>
+          <hashTree/>
+          <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+            <stringProp name="ConstantTimer.delay">0</stringProp>
+            <stringProp name="RandomTimer.range">100.0</stringProp>
+          </UniformRandomTimer>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPreProcessor>
+          <hashTree/>
+          <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPreProcessor>
+          <hashTree/>
+          <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
+          <hashTree/>
+          <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
+            <stringProp name="argument_name"/>
+            <boolProp name="path_extension">false</boolProp>
+            <boolProp name="path_extension_no_equals">false</boolProp>
+            <boolProp name="path_extension_no_questionmark">false</boolProp>
+            <boolProp name="cache_value">false</boolProp>
+            <boolProp name="encode">false</boolProp>
+          </URLRewritingModifier>
+          <hashTree/>
+          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="JDBC PreProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryTimeout"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Store as String</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPreProcessor>
+          <hashTree/>
+          <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
+            <stringProp name="cacheKey"/>
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PreProcessor>
+          <hashTree/>
+          <RegExUserParameters guiclass="RegExUserParametersGui" testclass="RegExUserParameters" testname="RegEx User Parameters" enabled="true">
+            <stringProp name="RegExUserParameters.regex_ref_name"/>
+            <stringProp name="RegExUserParameters.param_names_gr_nr"/>
+            <stringProp name="RegExUserParameters.param_values_gr_nr"/>
+          </RegExUserParameters>
+          <hashTree/>
+          <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
+            <collectionProp name="UserParameters.names"/>
+            <collectionProp name="UserParameters.thread_values">
+              <collectionProp name="1"/>
+            </collectionProp>
+            <boolProp name="UserParameters.per_iteration">false</boolProp>
+          </UserParameters>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/>
+        <hashTree>
+          <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="domain"/>
+            <boolProp name="imageParsing">false</boolProp>
+            <stringProp name="logFile"/>
+            <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
+            <stringProp name="portString"/>
+          </AccessLogSampler>
+          <hashTree/>
+          <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </AjpSampler>
+          <hashTree/>
+          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
+            <stringProp name="BeanShellSampler.query"/>
+            <stringProp name="BeanShellSampler.filename"/>
+            <stringProp name="BeanShellSampler.parameters"/>
+            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
+          </BeanShellSampler>
+          <hashTree/>
+          <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFSampler>
+          <hashTree/>
+          <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugSampler>
+          <hashTree/>
+          <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
+            <stringProp name="FTPSampler.server"/>
+            <stringProp name="FTPSampler.port"/>
+            <stringProp name="FTPSampler.filename"/>
+            <stringProp name="FTPSampler.localfilename"/>
+            <stringProp name="FTPSampler.inputdata"/>
+            <boolProp name="FTPSampler.binarymode">false</boolProp>
+            <boolProp name="FTPSampler.saveresponse">false</boolProp>
+            <boolProp name="FTPSampler.upload">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </FTPSampler>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"/>
+            <stringProp name="HTTPSampler.port"/>
+            <stringProp name="HTTPSampler.connect_timeout"/>
+            <stringProp name="HTTPSampler.response_timeout"/>
+            <stringProp name="HTTPSampler.protocol"/>
+            <stringProp name="HTTPSampler.contentEncoding"/>
+            <stringProp name="HTTPSampler.path"/>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"/>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">5</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0x03</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryTimeout"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Store as String</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCSampler>
+          <hashTree/>
+          <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
+            <stringProp name="JMSSampler.queueconnectionfactory"/>
+            <stringProp name="JMSSampler.SendQueue"/>
+            <stringProp name="JMSSampler.ReceiveQueue"/>
+            <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
+            <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
+            <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
+            <stringProp name="JMSSampler.timeout"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="JMSSampler.initialContextFactory"/>
+            <stringProp name="JMSSampler.contextProviderUrl"/>
+            <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="arguments" elementType="JMSProperties">
+              <collectionProp name="JMSProperties.properties"/>
+            </elementProp>
+          </JMSSampler>
+          <hashTree/>
+          <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.expiration"/>
+            <stringProp name="jms.priority"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <stringProp name="jms.text_message"/>
+            <stringProp name="jms.input_file"/>
+            <stringProp name="jms.random_path"/>
+            <stringProp name="jms.config_choice">jms_use_text</stringProp>
+            <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <elementProp name="jms.jmsProperties" elementType="JMSProperties">
+              <collectionProp name="JMSProperties.properties"/>
+            </elementProp>
+          </PublisherSampler>
+          <hashTree/>
+          <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
+            <stringProp name="jms.jndi_properties">false</stringProp>
+            <stringProp name="jms.initial_context_factory"/>
+            <stringProp name="jms.provider_url"/>
+            <stringProp name="jms.connection_factory"/>
+            <stringProp name="jms.topic"/>
+            <stringProp name="jms.security_principle"/>
+            <stringProp name="jms.security_credentials"/>
+            <boolProp name="jms.authenticate">false</boolProp>
+            <stringProp name="jms.iterations">1</stringProp>
+            <stringProp name="jms.read_response">true</stringProp>
+            <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
+          </SubscriberSampler>
+          <hashTree/>
+          <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
+            <stringProp name="cacheKey"/>
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Sampler>
+          <hashTree/>
+          <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
+            <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
+            <stringProp name="junitsampler.constructorstring"/>
+            <stringProp name="junitsampler.method">testRerun</stringProp>
+            <stringProp name="junitsampler.pkg.filter"/>
+            <stringProp name="junitsampler.success">Test successful</stringProp>
+            <stringProp name="junitsampler.success.code">1000</stringProp>
+            <stringProp name="junitsampler.failure">Test failed</stringProp>
+            <stringProp name="junitsampler.failure.code">0001</stringProp>
+            <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
+            <stringProp name="junitsampler.error.code">9999</stringProp>
+            <stringProp name="junitsampler.exec.setup">false</stringProp>
+            <stringProp name="junitsampler.append.error">false</stringProp>
+            <stringProp name="junitsampler.append.exception">false</stringProp>
+          </JUnitSampler>
+          <hashTree/>
+          <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <stringProp name="scope">2</stringProp>
+            <stringProp name="countlimit"/>
+            <stringProp name="timelimit"/>
+            <stringProp name="attributes"/>
+            <stringProp name="return_object">false</stringProp>
+            <stringProp name="deref_aliases">false</stringProp>
+            <stringProp name="connection_timeout"/>
+            <stringProp name="parseflag">false</stringProp>
+            <stringProp name="secure">false</stringProp>
+            <stringProp name="user_dn"/>
+            <stringProp name="user_pw"/>
+            <stringProp name="comparedn"/>
+            <stringProp name="comparefilt"/>
+            <stringProp name="modddn"/>
+            <stringProp name="newdn"/>
+          </LDAPExtSampler>
+          <hashTree/>
+          <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
+            <stringProp name="servername"/>
+            <stringProp name="port"/>
+            <stringProp name="rootdn"/>
+            <boolProp name="user_defined">false</boolProp>
+            <stringProp name="test">add</stringProp>
+            <stringProp name="base_entry_dn"/>
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </LDAPSampler>
+          <hashTree/>
+          <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
+            <stringProp name="host_type">pop3</stringProp>
+            <stringProp name="folder">INBOX</stringProp>
+            <intProp name="num_messages">-1</intProp>
+            <boolProp name="delete">false</boolProp>
+            <stringProp name="host"/>
+            <stringProp name="username"/>
+            <stringProp name="password"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+          </MailReaderSampler>
+          <hashTree/>
+          <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="OS Process Sampler" enabled="true">
+            <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
+            <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
+            <stringProp name="SystemSampler.command"/>
+            <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SystemSampler.directory"/>
+          </SystemSampler>
+          <hashTree/>
+          <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
+            <stringProp name="SMTPSampler.server"/>
+            <stringProp name="SMTPSampler.serverPort"/>
+            <stringProp name="SMTPSampler.mailFrom"/>
+            <stringProp name="SMTPSampler.replyTo"/>
+            <stringProp name="SMTPSampler.receiverTo"/>
+            <stringProp name="SMTPSampler.receiverCC"/>
+            <stringProp name="SMTPSampler.receiverBCC"/>
+            <stringProp name="SMTPSampler.subject"/>
+            <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
+            <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
+            <stringProp name="SMTPSampler.message"/>
+            <stringProp name="SMTPSampler.plainBody">false</stringProp>
+            <stringProp name="SMTPSampler.attachFile"/>
+            <stringProp name="SMTPSampler.useSSL">false</stringProp>
+            <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
+            <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
+            <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
+            <stringProp name="SMTPSampler.trustStoreToUse"/>
+            <boolProp name="SMTPSampler.use_eml">false</boolProp>
+            <stringProp name="SMTPSampler.emlMessageToSend"/>
+            <stringProp name="SMTPSampler.useAuth">false</stringProp>
+            <stringProp name="SMTPSampler.password"/>
+            <stringProp name="SMTPSampler.username"/>
+            <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
+            <stringProp name="SMTPSampler.enableDebug">false</stringProp>
+            <collectionProp name="SMTPSampler.headerFields"/>
+          </SmtpSampler>
+          <hashTree/>
+          <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="SOAP/XML-RPC Request" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="SoapSampler.URL_DATA"/>
+            <stringProp name="HTTPSamper.xml_data"/>
+            <stringProp name="SoapSampler.xml_data_file"/>
+            <stringProp name="SoapSampler.SOAP_ACTION"/>
+            <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+          </ConfigTestElement>
+          <hashTree/>
+          <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
+            <stringProp name="TCPSampler.server"/>
+            <boolProp name="TCPSampler.reUseConnection">true</boolProp>
+            <stringProp name="TCPSampler.port"/>
+            <boolProp name="TCPSampler.nodelay">false</boolProp>
+            <stringProp name="TCPSampler.timeout"/>
+            <stringProp name="TCPSampler.request"/>
+            <boolProp name="TCPSampler.closeConnection">false</boolProp>
+            <stringProp name="ConfigTestElement.username"/>
+            <stringProp name="ConfigTestElement.password"/>
+          </TCPSampler>
+          <hashTree/>
+          <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
+            <intProp name="ActionProcessor.action">1</intProp>
+            <intProp name="ActionProcessor.target">0</intProp>
+            <stringProp name="ActionProcessor.duration"/>
+          </TestAction>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/>
+        <hashTree>
+          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellPostProcessor>
+          <hashTree/>
+          <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFPostProcessor>
+          <hashTree/>
+          <HtmlExtractor guiclass="HtmlExtractorGui" testclass="HtmlExtractor" testname="CSS/JQuery Extractor" enabled="true">
+            <stringProp name="HtmlExtractor.refname"/>
+            <stringProp name="HtmlExtractor.expr"/>
+            <stringProp name="HtmlExtractor.attribute"/>
+            <stringProp name="HtmlExtractor.default"/>
+            <stringProp name="HtmlExtractor.match_number"/>
+            <stringProp name="HtmlExtractor.extractor_impl"/>
+          </HtmlExtractor>
+          <hashTree/>
+          <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true">
+            <boolProp name="displayJMeterProperties">false</boolProp>
+            <boolProp name="displayJMeterVariables">true</boolProp>
+            <boolProp name="displaySamplerProperties">true</boolProp>
+            <boolProp name="displaySystemProperties">false</boolProp>
+          </DebugPostProcessor>
+          <hashTree/>
+          <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
+            <stringProp name="dataSource"/>
+            <stringProp name="query"/>
+            <stringProp name="queryArguments"/>
+            <stringProp name="queryArgumentsTypes"/>
+            <stringProp name="queryTimeout"/>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Store as String</stringProp>
+            <stringProp name="resultVariable"/>
+            <stringProp name="variableNames"/>
+          </JDBCPostProcessor>
+          <hashTree/>
+          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
+            <stringProp name="cacheKey"/>
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223PostProcessor>
+          <hashTree/>
+          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+            <stringProp name="RegexExtractor.refname"/>
+            <stringProp name="RegexExtractor.regex"/>
+            <stringProp name="RegexExtractor.template"/>
+            <stringProp name="RegexExtractor.default"/>
+            <stringProp name="RegexExtractor.match_number"/>
+          </RegexExtractor>
+          <hashTree/>
+          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
+            <intProp name="OnError.action">0</intProp>
+          </ResultAction>
+          <hashTree/>
+          <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
+            <stringProp name="XPathExtractor.default"/>
+            <stringProp name="XPathExtractor.refname"/>
+            <stringProp name="XPathExtractor.xpathQuery"/>
+            <boolProp name="XPathExtractor.validate">false</boolProp>
+            <boolProp name="XPathExtractor.tolerant">false</boolProp>
+            <boolProp name="XPathExtractor.namespace">false</boolProp>
+          </XPathExtractor>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/>
+        <hashTree>
+          <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
+            <stringProp name="BeanShellAssertion.query"/>
+            <stringProp name="BeanShellAssertion.filename"/>
+            <stringProp name="BeanShellAssertion.parameters"/>
+            <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
+          </BeanShellAssertion>
+          <hashTree/>
+          <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFAssertion>
+          <hashTree/>
+          <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
+            <boolProp name="compareContent">true</boolProp>
+            <longProp name="compareTime">-1</longProp>
+            <collectionProp name="stringsToSkip"/>
+          </CompareAssertion>
+          <hashTree/>
+          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
+            <stringProp name="DurationAssertion.duration"/>
+          </DurationAssertion>
+          <hashTree/>
+          <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
+            <longProp name="html_assertion_error_threshold">0</longProp>
+            <longProp name="html_assertion_warning_threshold">0</longProp>
+            <stringProp name="html_assertion_doctype">omit</stringProp>
+            <boolProp name="html_assertion_errorsonly">false</boolProp>
+            <longProp name="html_assertion_format">0</longProp>
+            <stringProp name="html_assertion_filename"/>
+          </HTMLAssertion>
+          <hashTree/>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="cacheKey"/>
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Assertion>
+          <hashTree/>
+          <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
+            <stringProp name="MD5HexAssertion.size"/>
+          </MD5HexAssertion>
+          <hashTree/>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings"/>
+            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">16</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
+            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
+            <stringProp name="SizeAssertion.size"/>
+            <intProp name="SizeAssertion.operator">1</intProp>
+          </SizeAssertion>
+          <hashTree/>
+          <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
+            <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
+            <boolProp name="SMIMEAssert.notSigned">false</boolProp>
+            <stringProp name="SMIMEAssert.issuerDn"/>
+            <stringProp name="SMIMEAssert.signerDn"/>
+            <stringProp name="SMIMEAssert.signerSerial"/>
+            <stringProp name="SMIMEAssert.signerEmail"/>
+            <stringProp name="SMIMEAssert.signerCertFile"/>
+            <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
+            <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
+            <stringProp name="SMIMEAssert.messagePosition"/>
+          </SMIMEAssertion>
+          <hashTree/>
+          <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
+          <hashTree/>
+          <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
+            <stringProp name="xmlschema_assertion_filename"/>
+          </XMLSchemaAssertion>
+          <hashTree/>
+          <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
+            <boolProp name="XPath.negate">false</boolProp>
+            <stringProp name="XPath.xpath">/</stringProp>
+            <boolProp name="XPath.validate">false</boolProp>
+            <boolProp name="XPath.whitespace">false</boolProp>
+            <boolProp name="XPath.tolerant">false</boolProp>
+            <boolProp name="XPath.namespace">false</boolProp>
+          </XPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/>
+        <hashTree>
+          <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="graphiteMetricsSender" elementType="Argument">
+                  <stringProp name="Argument.name">graphiteMetricsSender</stringProp>
+                  <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="graphiteHost" elementType="Argument">
+                  <stringProp name="Argument.name">graphiteHost</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="graphitePort" elementType="Argument">
+                  <stringProp name="Argument.name">graphitePort</stringProp>
+                  <stringProp name="Argument.value">2003</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="rootMetricsPrefix" elementType="Argument">
+                  <stringProp name="Argument.name">rootMetricsPrefix</stringProp>
+                  <stringProp name="Argument.value">jmeter.</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="summaryOnly" elementType="Argument">
+                  <stringProp name="Argument.name">summaryOnly</stringProp>
+                  <stringProp name="Argument.value">true</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="samplersList" elementType="Argument">
+                  <stringProp name="Argument.name">samplersList</stringProp>
+                  <stringProp name="Argument.value"/>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="percentiles" elementType="Argument">
+                  <stringProp name="Argument.name">percentiles</stringProp>
+                  <stringProp name="Argument.value">90;95;99</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient</stringProp>
+          </BackendListener>
+          <hashTree/>
+          <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <boolProp name="resetInterpreter">false</boolProp>
+            <stringProp name="script"/>
+          </BeanShellListener>
+          <hashTree/>
+          <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </BSFListener>
+          <hashTree/>
+          <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
+          <hashTree/>
+          <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
+            <stringProp name="cacheKey"/>
+            <stringProp name="filename"/>
+            <stringProp name="parameters"/>
+            <stringProp name="script"/>
+            <stringProp name="scriptLanguage"/>
+          </JSR223Listener>
+          <hashTree/>
+          <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
+              <stringProp name="MailerModel.successLimit">2</stringProp>
+              <stringProp name="MailerModel.failureLimit">2</stringProp>
+              <stringProp name="MailerModel.failureSubject"/>
+              <stringProp name="MailerModel.fromAddress"/>
+              <stringProp name="MailerModel.smtpHost"/>
+              <stringProp name="MailerModel.successSubject"/>
+              <stringProp name="MailerModel.addressie"/>
+            </elementProp>
+            <stringProp name="filename"/>
+          </MailerResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Monitor Results" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
+            <stringProp name="FileSaver.filename"/>
+            <boolProp name="FileSaver.errorsonly">false</boolProp>
+            <boolProp name="FileSaver.skipautonumber">false</boolProp>
+            <boolProp name="FileSaver.skipsuffix">false</boolProp>
+            <boolProp name="FileSaver.successonly">false</boolProp>
+          </ResultSaver>
+          <hashTree/>
+          <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="ObsoleteGui" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
+              <name>saveConfig</name>
+              <value class="SampleSaveConfiguration">
+                <time>true</time>
+                <latency>true</latency>
+                <timestamp>true</timestamp>
+                <success>true</success>
+                <label>true</label>
+                <code>true</code>
+                <message>true</message>
+                <threadName>true</threadName>
+                <dataType>true</dataType>
+                <encoding>false</encoding>
+                <assertions>true</assertions>
+                <subresults>true</subresults>
+                <responseData>false</responseData>
+                <samplerData>false</samplerData>
+                <xml>false</xml>
+                <fieldNames>false</fieldNames>
+                <responseHeaders>false</responseHeaders>
+                <requestHeaders>false</requestHeaders>
+                <responseDataOnError>false</responseDataOnError>
+                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+                <assertionsResultsToSave>0</assertionsResultsToSave>
+                <bytes>true</bytes>
+                <threadCounts>true</threadCounts>
+              </value>
+            </objProp>
+            <stringProp name="filename"/>
+          </ResultCollector>
+          <hashTree/>
+          <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+            <boolProp name="ResultCollector.error_logging">false</boolProp>
+            <objProp>
... 4764 lines suppressed ...


(jmeter) 02/04: feat: fallback to English locale when loading test plan with string value in enum property

Posted by vl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 5fefa6ee6433aa95b6f4fda90e75c676411be16d
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Fri Nov 21 20:11:00 2025 +0300

    feat: fallback to English locale when loading test plan with string value in enum property
    
    Previously only the current locale was considered, and now we fallback to English.
    
    It helps for cases like loading sample test plans (saved years ago) when
    JMeter runs with non-English locale.
---
 .../java/org/apache/jmeter/config/CSVDataSet.java  |  41 ++------
 .../apache/jmeter/config/CSVDataSetBeanInfo.java   |  24 ++++-
 .../jmeter/timers/ConstantThroughputTimer.java     |  34 ++-----
 src/core/build.gradle.kts                          |   1 +
 .../jmeter/testbeans/gui/ComboStringEditor.java    |  10 +-
 .../apache/jmeter/testbeans/gui/EnumEditor.java    |  66 ++++++++-----
 .../testbeans/gui/GenericTestBeanCustomizer.java   | 109 +++++++++++++++++++++
 .../kotlin/org/apache/jorphan/util/EnumUtils.kt    |  72 ++++++++++++++
 8 files changed, 267 insertions(+), 90 deletions(-)

diff --git a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java
index ee3bf0f010..d641edc2e8 100644
--- a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java
+++ b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java
@@ -17,11 +17,7 @@
 
 package org.apache.jmeter.config;
 
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
 import java.io.IOException;
-import java.util.ResourceBundle;
 
 import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.engine.event.LoopIterationListener;
@@ -121,38 +117,15 @@ public class CSVDataSet extends ConfigTestElement
      */
     @Override
     public void setProperty(JMeterProperty property) {
-        if (!(property instanceof StringProperty stringProperty)) {
-            super.setProperty(property);
-            return;
-        }
-
-        final String propName = property.getName();
-        if (!"shareMode".equals(propName)) {
-            super.setProperty(property);
-            return;
-        }
-
-        final String propValue = property.getStringValue();
-        if (propValue.contains(" ")) { // variables are unlikely to contain spaces, so most likely a translation
-            try {
-                final BeanInfo beanInfo = Introspector.getBeanInfo(this.getClass());
-                final ResourceBundle rb = (ResourceBundle) beanInfo.getBeanDescriptor().getValue(GenericTestBeanCustomizer.RESOURCE_BUNDLE);
-                for (String resKey : CSVDataSetBeanInfo.getShareTags()) {
-                    if (propValue.equals(rb.getString(resKey))) {
-                        if (log.isDebugEnabled()) {
-                            log.debug("Converted {}={} to {} using Locale: {}", propName, propValue, resKey, rb.getLocale());
-                        }
-                        stringProperty.setValue(resKey); // reset the value
-                        super.setProperty(property);
-                        return;
-                    }
-                }
-                // This could perhaps be a variable name
-                log.warn("Could not translate {}={} using Locale: {}", propName, propValue, rb.getLocale());
-            } catch (IntrospectionException e) {
-                log.error("Could not find BeanInfo; cannot translate shareMode entries", e);
+        String propName = property.getName();
+        if ("shareMode".equals(propName)) {
+            String enumLabel = GenericTestBeanCustomizer.normalizeEnumStringValue(getClass(), CSVDataSetBeanInfo.ShareMode.class, property);
+            if (enumLabel != null && (!(property instanceof StringProperty) || !enumLabel.equals(property.getStringValue()))) {
+                super.setProperty(propName, enumLabel);
+                return;
             }
         }
+
         super.setProperty(property);
     }
 
diff --git a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java
index 5393963da7..cdd0dccc04 100644
--- a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java
+++ b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java
@@ -40,6 +40,22 @@ public class CSVDataSetBeanInfo extends BeanInfoSupport {
     private static final String SHAREMODE = "shareMode";             //$NON-NLS-1$
 
     // Access needed from CSVDataSet
+    enum ShareMode {
+        ALL("shareMode.all"),
+        GROUP("shareMode.group"),
+        THREAD("shareMode.thread");
+
+        private final String value;
+
+        ShareMode(String value) {
+            this.value = value;
+        }
+
+        @Override
+        public String toString() {
+            return value;
+        }
+    }
     private static final String[] SHARE_TAGS = new String[3];
     static final int SHARE_ALL    = 0;
     static final int SHARE_GROUP  = 1;
@@ -47,9 +63,11 @@ public class CSVDataSetBeanInfo extends BeanInfoSupport {
 
     // Store the resource keys
     static {
-        SHARE_TAGS[SHARE_ALL]    = "shareMode.all"; //$NON-NLS-1$
-        SHARE_TAGS[SHARE_GROUP]  = "shareMode.group"; //$NON-NLS-1$
-        SHARE_TAGS[SHARE_THREAD] = "shareMode.thread"; //$NON-NLS-1$
+        for (ShareMode value : ShareMode.values()) {
+            @SuppressWarnings("EnumOrdinal")
+            int index = value.ordinal();
+            SHARE_TAGS[index] = value.toString();
+        }
     }
 
     public CSVDataSetBeanInfo() {
diff --git a/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java b/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java
index 9dc8d0baee..2834eebc46 100644
--- a/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java
+++ b/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java
@@ -17,10 +17,6 @@
 
 package org.apache.jmeter.timers;
 
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.util.ResourceBundle;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicLong;
@@ -38,8 +34,6 @@ import org.apache.jmeter.threads.AbstractThreadGroup;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jorphan.collections.IdentityKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * This class implements a constant throughput timer. A Constant Throughput
@@ -59,7 +53,6 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
         final Object MUTEX = new Object();
         long lastScheduledTime = 0;
     }
-    private static final Logger log = LoggerFactory.getLogger(ConstantThroughputTimer.class);
     private static final AtomicLong PREV_TEST_STARTED = new AtomicLong(0L);
 
     private static final double MILLISEC_PER_MIN = 60000.0;
@@ -271,27 +264,12 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
     @Override
     @SuppressWarnings("EnumOrdinal")
     public void setProperty(JMeterProperty property) {
-        if (property instanceof StringProperty) {
-            final String pn = property.getName();
-            if (pn.equals("calcMode")) {
-                final Object objectValue = property.getObjectValue();
-                try {
-                    final BeanInfo beanInfo = Introspector.getBeanInfo(this.getClass());
-                    final ResourceBundle rb = (ResourceBundle) beanInfo.getBeanDescriptor().getValue(GenericTestBeanCustomizer.RESOURCE_BUNDLE);
-                    for(Enum<Mode> e : Mode.CACHED_VALUES) {
-                        final String propName = e.toString();
-                        if (objectValue.equals(rb.getObject(propName))) {
-                            final int tmpMode = e.ordinal();
-                            log.debug("Converted {}={} to mode={} using Locale: {}", pn, objectValue, tmpMode,
-                                    rb.getLocale());
-                            super.setProperty(pn, tmpMode);
-                            return;
-                        }
-                    }
-                    log.warn("Could not convert {}={} using Locale: {}", pn, objectValue, rb.getLocale());
-                } catch (IntrospectionException e) {
-                    log.error("Could not find BeanInfo", e);
-                }
+        String propertyName = property.getName();
+        if (propertyName.equals("calcMode")) {
+            String enumLabel = GenericTestBeanCustomizer.normalizeEnumStringValue(getClass(), Mode.class, property);
+            if (enumLabel != null && (!(property instanceof StringProperty) || !enumLabel.equals(property.getStringValue()))) {
+                super.setProperty(propertyName, enumLabel);
+                return;
             }
         }
         super.setProperty(property);
diff --git a/src/core/build.gradle.kts b/src/core/build.gradle.kts
index 30be9b34c9..e654f4d834 100644
--- a/src/core/build.gradle.kts
+++ b/src/core/build.gradle.kts
@@ -43,6 +43,7 @@ dependencies {
         // We use StaXDriver, so we exclude xmlpull, see https://x-stream.github.io/download.html#optional-deps
         exclude("io.github.x-stream", "mxparser")
     }
+    api("org.jspecify:jspecify")
     api("org.apache.logging.log4j:log4j-1.2-api")
     api("org.apache.logging.log4j:log4j-api")
     api("org.apache.logging.log4j:log4j-core") {
diff --git a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/ComboStringEditor.java b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/ComboStringEditor.java
index 11a2eb2ca3..065dd7fecf 100644
--- a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/ComboStringEditor.java
+++ b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/ComboStringEditor.java
@@ -191,7 +191,15 @@ class ComboStringEditor extends PropertyEditorSupport implements ItemListener, C
      */
     @Override
     public void setValue(Object value) {
-        setAsText((String) value);
+        if (value == null) {
+            setAsText(null);
+            return;
+        }
+        if (value instanceof String literal) {
+            setAsText(literal);
+            return;
+        }
+        throw new IllegalArgumentException("Expected String but got " + value.getClass() + ", value=" + value);
     }
 
     /**
diff --git a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/EnumEditor.java b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/EnumEditor.java
index 62e1f79f50..7c241aa425 100644
--- a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/EnumEditor.java
+++ b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/EnumEditor.java
@@ -20,12 +20,18 @@ package org.apache.jmeter.testbeans.gui;
 import java.awt.Component;
 import java.beans.PropertyDescriptor;
 import java.beans.PropertyEditorSupport;
+import java.util.List;
 import java.util.ResourceBundle;
 
+import javax.swing.ComboBoxModel;
 import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListCellRenderer;
 import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
 
 import org.apache.jmeter.gui.ClearGui;
+import org.apache.jorphan.util.EnumUtils;
 
 /**
  * This class implements a property editor for String properties based on an enum
@@ -37,26 +43,38 @@ import org.apache.jmeter.gui.ClearGui;
  */
 class EnumEditor extends PropertyEditorSupport implements ClearGui {
 
-    private final JComboBox<String> combo;
+    private final JComboBox<Enum<?>> combo;
 
-    private final DefaultComboBoxModel<String> model;
-
-    private final int defaultIndex;
+    private final Enum<?> defaultValue;
 
     public EnumEditor(final PropertyDescriptor descriptor, final Class<? extends Enum<?>> enumClazz, final ResourceBundle rb) {
-        model = new DefaultComboBoxModel<>();
+        DefaultComboBoxModel<Enum<?>> model = new DefaultComboBoxModel<>();
         combo = new JComboBox<>(model);
         combo.setEditable(false);
-        for(Enum<?> e : enumClazz.getEnumConstants()) {
-            model.addElement((String) rb.getObject(e.toString()));
+        combo.setRenderer(
+                new DefaultListCellRenderer() {
+                    @Override
+                    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+                        JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+                        Enum<?> enumValue = (Enum<?>) value;
+                        label.setText(rb.getString(EnumUtils.getStringValue(enumValue)));
+                        return label;
+                    }
+                }
+        );
+        List<? extends Enum<?>> values = EnumUtils.values(enumClazz);
+        for(Enum<?> e : values) {
+            model.addElement(e);
         }
         Object def = descriptor.getValue(GenericTestBeanCustomizer.DEFAULT);
-        if (def instanceof Integer integer) {
-            defaultIndex = integer;
+        if (def instanceof Enum<?> enumValue) {
+            defaultValue = enumValue;
+        } else if (def instanceof Integer index) {
+            defaultValue = values.get(index);
         } else {
-            defaultIndex = 0;
+            defaultValue = values.get(0);
         }
-        combo.setSelectedIndex(defaultIndex);
+        combo.setSelectedItem(defaultValue);
     }
 
     @Override
@@ -71,35 +89,35 @@ class EnumEditor extends PropertyEditorSupport implements ClearGui {
 
     @Override
     public Object getValue() {
-        return combo.getSelectedIndex();
+        return combo.getSelectedItem();
     }
 
     @Override
-    public String getAsText() {
-        Object value = combo.getSelectedItem();
-        return (String) value;
-    }
-
-    @Override
-    @SuppressWarnings("EnumOrdinal")
     public void setValue(Object value) {
         if (value instanceof Enum<?> anEnum){
-            combo.setSelectedIndex(anEnum.ordinal());
+            combo.setSelectedItem(anEnum);
         } else if (value instanceof Integer integer) {
             combo.setSelectedIndex(integer);
-        } else {
-            combo.setSelectedItem(value);
+        } else if (value instanceof String string) {
+            ComboBoxModel<Enum<?>> model = combo.getModel();
+            for (int i = 0; i < model.getSize(); i++) {
+                Enum<?> element = model.getElementAt(i);
+                if (EnumUtils.getStringValue(element).equals(string)) {
+                    combo.setSelectedItem(element);
+                    return;
+                }
+            }
         }
     }
 
     @Override
     public void setAsText(String value) {
-        combo.setSelectedItem(value);
+        throw new UnsupportedOperationException("Not supported yet. Use enum value rather than text, got " + value);
     }
 
     @Override
     public void clearGui() {
-        combo.setSelectedIndex(defaultIndex);
+        combo.setSelectedItem(defaultValue);
     }
 
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java
index b246102104..9f25190d33 100644
--- a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java
+++ b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java
@@ -22,6 +22,8 @@ import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.beans.PropertyEditor;
 import java.beans.PropertyEditorManager;
@@ -29,6 +31,8 @@ import java.io.Serializable;
 import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.ResourceBundle;
 
@@ -39,9 +43,17 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.SwingConstants;
 
+import org.apache.jmeter.JMeter;
 import org.apache.jmeter.gui.ClearGui;
 import org.apache.jmeter.testbeans.TestBeanHelper;
+import org.apache.jmeter.testelement.property.IntegerProperty;
+import org.apache.jmeter.testelement.property.JMeterProperty;
+import org.apache.jmeter.testelement.property.LongProperty;
+import org.apache.jmeter.testelement.property.StringProperty;
 import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.util.EnumUtils;
+import org.apiguardian.api.API;
+import org.jspecify.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -309,6 +321,103 @@ public class GenericTestBeanCustomizer extends JPanel implements SharedCustomize
         init();
     }
 
+    /**
+     * Normalizes an enum-valued {@link JMeterProperty} based on the specified class and enum type.
+     *
+     * <p>
+     * The method interprets the property value as an enum value using different strategies
+     * depending on the type of the property (e.g., {@link IntegerProperty}, {@link LongProperty}, {@link StringProperty}).
+     * If the property is valid and maps to an enum value, the method returns a new {@link StringProperty}
+     * representing the normalized enum value. If the property is invalid or cannot be mapped, the method
+     * returns {@code null}.
+     *
+     * @param <T> the type of the enum
+     * @param klass the class containing the enum
+     * @param enumKlass the enum class type
+     * @param property the JMeterProperty to be normalized
+     * @return a StringProperty containing the normalized enum value, or null if the property is invalid or unrecognized
+     */
+    @API(status = API.Status.INTERNAL, since = "6.0.0")
+    public static <T extends Enum<?>> @Nullable JMeterProperty normalizeEnumProperty(
+            Class<?> klass, Class<T> enumKlass, JMeterProperty property) {
+        List<T> values = EnumUtils.values(enumKlass);
+        T value;
+        if (property instanceof IntegerProperty intProperty) {
+            int index = intProperty.getIntValue();
+            if (index >= 0 && index <= values.size()) {
+                value = values.get(index);
+            } else {
+                return null;
+            }
+        } else if (property instanceof LongProperty longProperty) {
+            long index = longProperty.getLongValue();
+            if (index >= 0 && index <= values.size()) {
+                value = values.get((int) index);
+            } else {
+                return null;
+            }
+        } else if (property instanceof StringProperty stringProperty) {
+            String stringValue = stringProperty.getStringValue();
+            if (stringValue == null) {
+                return null;
+            }
+            value = normalizeEnumStringValue(stringValue, klass, enumKlass);
+            if (stringValue.equals(EnumUtils.getStringValue(value))) {
+                // If the input property was good enough, keep it
+                return property;
+            }
+        } else {
+            return null;
+        }
+        return new StringProperty(property.getName(), EnumUtils.getStringValue(value));
+    }
+
+    @API(status = API.Status.INTERNAL, since = "6.0.0")
+    public static <T extends Enum<?>> T normalizeEnumStringValue(String value, Class<?> klass, Class<T> enumKlass) {
+        T enumValue = EnumUtils.valueOf(enumKlass, value);
+        if (enumValue != null) {
+            return enumValue;
+        }
+        return normalizeEnumStringValue(value, klass, EnumUtils.values(enumKlass));
+    }
+
+    private static <T extends Enum<?>> T normalizeEnumStringValue(String value, Class<?> klass, List<T> values) {
+        // Fallback: the value might be localized, thus check the current and root locales
+        String bundleName = null;
+        try {
+            BeanInfo beanInfo = Introspector.getBeanInfo(klass);
+            ResourceBundle rb = (ResourceBundle) beanInfo.getBeanDescriptor().getValue(GenericTestBeanCustomizer.RESOURCE_BUNDLE);
+            bundleName = rb.getBaseBundleName();
+            T enumValue = findEnumValue(value, rb, values);
+            if (enumValue != null) {
+                return enumValue;
+            }
+            String language = rb.getLocale().getLanguage();
+            log.warn("Could not convert {} using Locale: {}", value, rb.getLocale());
+            if (language.isEmpty()) {
+                return null;
+            }
+        } catch (IntrospectionException e) {
+            log.error("Could not find BeanInfo", e);
+        }
+        // Try again with the Root locale
+        if (bundleName == null) {
+            bundleName = klass.getName() + "Resources";
+        }
+        ResourceBundle rootBundle = ResourceBundle.getBundle(bundleName, Locale.ROOT, klass.getClassLoader());
+        return findEnumValue(value, rootBundle, values);
+    }
+
+    private static <T extends Enum<?>> @Nullable T findEnumValue(String stringValue, ResourceBundle rb, List<T> values) {
+        for (T enumValue : values) {
+            if (stringValue.equals(rb.getObject(enumValue.toString()))) {
+                log.debug("Converted {} to {} using Locale: {}", stringValue, enumValue, rb.getLocale());
+                return enumValue;
+            }
+        }
+        return null;
+    }
+
     /**
      * Validate the descriptor attributes.
      *
diff --git a/src/jorphan/src/main/kotlin/org/apache/jorphan/util/EnumUtils.kt b/src/jorphan/src/main/kotlin/org/apache/jorphan/util/EnumUtils.kt
new file mode 100644
index 0000000000..ecee2105e5
--- /dev/null
+++ b/src/jorphan/src/main/kotlin/org/apache/jorphan/util/EnumUtils.kt
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:JvmName("EnumUtils")
+package org.apache.jorphan.util
+
+import org.apiguardian.api.API
+import java.util.Collections.unmodifiableList
+import java.util.Collections.unmodifiableMap
+
+private val VALUES = object : ClassValue<List<Enum<*>>>() {
+    override fun computeValue(type: Class<*>): List<Enum<*>> {
+        require(type.isEnum) {
+            "Class $type is not an enum"
+        }
+        @Suppress("UNCHECKED_CAST")
+        type as Class<Enum<*>>
+        val enumConstants = type.getEnumConstants()
+        return unmodifiableList(listOf(*enumConstants))
+    }
+}
+
+private val VALUE_MAP = object : ClassValue<Map<String, Enum<*>>>() {
+    override fun computeValue(type: Class<*>): Map<String, Enum<*>> {
+        require(type.isEnum) {
+            "Class $type is not an enum"
+        }
+        @Suppress("UNCHECKED_CAST")
+        type as Class<Enum<*>>
+        return unmodifiableMap(
+            VALUES.get(type).associateBy { it.stringValue }
+        )
+    }
+}
+
+@Suppress("UNCHECKED_CAST")
+@API(status = API.Status.EXPERIMENTAL, since = "6.0.0")
+public fun <T : Enum<*>> values(klass: Class<out T>): List<T> =
+    VALUES.get(klass) as List<T>
+
+@Suppress("UNCHECKED_CAST")
+@API(status = API.Status.EXPERIMENTAL, since = "6.0.0")
+public fun <T : Enum<*>> valueMap(klass: Class<out T>): List<T> =
+    VALUES.get(klass) as List<T>
+
+@Suppress("UNCHECKED_CAST")
+@API(status = API.Status.EXPERIMENTAL, since = "6.0.0")
+public inline fun <reified T : Enum<*>> valueOf(value: String): T? =
+    valueOf(T::class.java, value)
+
+@Suppress("UNCHECKED_CAST")
+@API(status = API.Status.EXPERIMENTAL, since = "6.0.0")
+public fun <T : Enum<*>> valueOf(klass: Class<T>, value: String): T? =
+    VALUE_MAP.get(klass)[value] as T?
+
+@get:API(status = API.Status.EXPERIMENTAL, since = "6.0.0")
+public val Enum<*>.stringValue: String
+    get() = toString()


(jmeter) 04/04: feat: add ConstantThroughputTimerSchema and use it in ConstantThroughputTimer

Posted by vl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit bf02362adca5d75f66525fde6fde4c98a05b2d2b
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Mon Nov 24 11:02:16 2025 +0500

    feat: add ConstantThroughputTimerSchema and use it in ConstantThroughputTimer
---
 .../java/org/apache/jmeter/config/CSVDataSet.java  | 52 +++++++++++----
 .../apache/jmeter/config/CSVDataSetBeanInfo.java   | 21 +-----
 .../jmeter/timers/ConstantThroughputTimer.java     | 76 ++++++++++++++--------
 .../timers/ConstantThroughputTimerBeanInfo.java    | 10 ++-
 .../jmeter/timers/ConstantThroughputTimerSchema.kt | 39 +++++++++++
 .../ConstantThroughputTimerResources.properties    |  2 +-
 .../ConstantThroughputTimerResources_de.properties |  2 +-
 .../ConstantThroughputTimerResources_es.properties |  2 +-
 .../ConstantThroughputTimerResources_fr.properties |  2 +-
 .../ConstantThroughputTimerResources_ko.properties |  2 +-
 ...nstantThroughputTimerResources_pt_BR.properties |  2 +-
 .../ConstantThroughputTimerResources_tr.properties |  2 +-
 ...nstantThroughputTimerResources_zh_CN.properties |  2 +-
 .../jmeter/timers/ConstantThroughputTimerTest.java | 14 +++-
 14 files changed, 156 insertions(+), 72 deletions(-)

diff --git a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java
index d641edc2e8..05f5f8f6f0 100644
--- a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java
+++ b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSet.java
@@ -29,13 +29,14 @@ import org.apache.jmeter.services.FileServer;
 import org.apache.jmeter.testbeans.TestBean;
 import org.apache.jmeter.testbeans.gui.GenericTestBeanCustomizer;
 import org.apache.jmeter.testelement.property.JMeterProperty;
-import org.apache.jmeter.testelement.property.StringProperty;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.util.EnumUtils;
 import org.apache.jorphan.util.JMeterStopThreadException;
 import org.apache.jorphan.util.JOrphanUtils;
 import org.apache.jorphan.util.StringUtilities;
+import org.jspecify.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,6 +69,24 @@ import org.slf4j.LoggerFactory;
 @TestElementMetadata(labelResource = "displayName")
 public class CSVDataSet extends ConfigTestElement
     implements TestBean, LoopIterationListener, NoConfigMerge {
+
+    public enum ShareMode {
+        ALL("shareMode.all"),
+        GROUP("shareMode.group"),
+        THREAD("shareMode.thread");
+
+        private final String value;
+
+        ShareMode(String value) {
+            this.value = value;
+        }
+
+        @Override
+        public String toString() {
+            return value;
+        }
+    }
+
     private static final Logger log = LoggerFactory.getLogger(CSVDataSet.class);
 
     private static final long serialVersionUID = 233L;
@@ -119,9 +138,10 @@ public class CSVDataSet extends ConfigTestElement
     public void setProperty(JMeterProperty property) {
         String propName = property.getName();
         if ("shareMode".equals(propName)) {
-            String enumLabel = GenericTestBeanCustomizer.normalizeEnumStringValue(getClass(), CSVDataSetBeanInfo.ShareMode.class, property);
-            if (enumLabel != null && (!(property instanceof StringProperty) || !enumLabel.equals(property.getStringValue()))) {
-                super.setProperty(propName, enumLabel);
+            JMeterProperty shareMode =
+                    GenericTestBeanCustomizer.normalizeEnumProperty(getClass(), ShareMode.class, property);
+            if (shareMode != null) {
+                super.setProperty(shareMode);
                 return;
             }
         }
@@ -193,13 +213,15 @@ public class CSVDataSet extends ConfigTestElement
     }
 
     private void setAlias(final JMeterContext context, String alias) {
-        String mode = getShareMode();
-        int modeInt = CSVDataSetBeanInfo.getShareModeAsInt(mode);
-        this.alias = switch(modeInt){
-            case CSVDataSetBeanInfo.SHARE_ALL -> alias;
-            case CSVDataSetBeanInfo.SHARE_GROUP -> alias + "@" + System.identityHashCode(context.getThreadGroup());
-            case CSVDataSetBeanInfo.SHARE_THREAD -> alias + "@" + System.identityHashCode(context.getThread());
-            default -> alias + "@" + mode; // user-specified key
+        ShareMode modeEnum = getShareModeAsEnum();
+        if (modeEnum == null) {
+            this.alias = alias + "@" + getShareMode(); // user-specified key
+            return;
+        }
+        this.alias = switch (modeEnum) {
+            case ALL -> alias;
+            case GROUP -> alias + "@" + System.identityHashCode(context.getThreadGroup());
+            case THREAD -> alias + "@" + System.identityHashCode(context.getThread());
         };
     }
 
@@ -294,6 +316,14 @@ public class CSVDataSet extends ConfigTestElement
         return shareMode;
     }
 
+    @Nullable ShareMode getShareModeAsEnum() {
+        String shareMode = getShareMode();
+        if (shareMode == null) {
+            return null;
+        }
+        return GenericTestBeanCustomizer.normalizeEnumStringValue(shareMode, getClass(), ShareMode.class);
+    }
+
     public void setShareMode(String value) {
         this.shareMode = value;
     }
diff --git a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java
index cdd0dccc04..15c27b60b4 100644
--- a/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java
+++ b/src/components/src/main/java/org/apache/jmeter/config/CSVDataSetBeanInfo.java
@@ -39,31 +39,12 @@ public class CSVDataSetBeanInfo extends BeanInfoSupport {
     private static final String QUOTED_DATA = "quotedData";          //$NON-NLS-1$
     private static final String SHAREMODE = "shareMode";             //$NON-NLS-1$
 
-    // Access needed from CSVDataSet
-    enum ShareMode {
-        ALL("shareMode.all"),
-        GROUP("shareMode.group"),
-        THREAD("shareMode.thread");
-
-        private final String value;
-
-        ShareMode(String value) {
-            this.value = value;
-        }
-
-        @Override
-        public String toString() {
-            return value;
-        }
-    }
     private static final String[] SHARE_TAGS = new String[3];
     static final int SHARE_ALL    = 0;
-    static final int SHARE_GROUP  = 1;
-    static final int SHARE_THREAD = 2;
 
     // Store the resource keys
     static {
-        for (ShareMode value : ShareMode.values()) {
+        for (CSVDataSet.ShareMode value : CSVDataSet.ShareMode.values()) {
             @SuppressWarnings("EnumOrdinal")
             int index = value.ordinal();
             SHARE_TAGS[index] = value.toString();
diff --git a/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java b/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java
index 2834eebc46..21a6edb7ae 100644
--- a/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java
+++ b/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimer.java
@@ -26,23 +26,26 @@ import org.apache.jmeter.gui.TestElementMetadata;
 import org.apache.jmeter.testbeans.TestBean;
 import org.apache.jmeter.testbeans.gui.GenericTestBeanCustomizer;
 import org.apache.jmeter.testelement.AbstractTestElement;
-import org.apache.jmeter.testelement.property.DoubleProperty;
-import org.apache.jmeter.testelement.property.IntegerProperty;
 import org.apache.jmeter.testelement.property.JMeterProperty;
-import org.apache.jmeter.testelement.property.StringProperty;
+import org.apache.jmeter.testelement.schema.PropertiesAccessor;
 import org.apache.jmeter.threads.AbstractThreadGroup;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jorphan.collections.IdentityKey;
+import org.apache.jorphan.util.EnumUtils;
+import org.apiguardian.api.API;
 
 /**
  * This class implements a constant throughput timer. A Constant Throughput
  * Timer paces the samplers under its influence so that the total number of
  * samples per unit of time approaches a given constant as much as possible.
  *
+ * <p>
  * There are two different ways of pacing the requests:
- * - delay each thread according to when it last ran
- * - delay each thread according to when any thread last ran
+ * <ul>
+ * <li>delay each thread according to when it last ran</li>
+ * <li>delay each thread according to when any thread last ran</li>
+ * </ul>
  */
 @GUIMenuSortOrder(4)
 @TestElementMetadata(labelResource = "displayName")
@@ -62,6 +65,8 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
     // TODO: most props use class simpleName as prefix but that would break backward compatiblity here
     public static final String THROUGHPUT = "throughput";
     public static final String CALC_MODE = "calcMode";
+    @API(status = API.Status.INTERNAL, since = "6.0.0")
+    public static final String MODE = "mode";
 
     /**
      * This enum defines the calculation modes used by the ConstantThroughputTimer.
@@ -75,8 +80,6 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
         ;
 
         private final String propertyName; // The property name to be used to look up the display string
-        // Enum#values() clones the array, and we don't want to pay that cost as we know we don't modify the array
-        private static final Mode[] CACHED_VALUES = values();
 
         Mode(String name) {
             this.propertyName = name;
@@ -108,6 +111,16 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
     public ConstantThroughputTimer() {
     }
 
+    @Override
+    public ConstantThroughputTimerSchema getSchema() {
+        return ConstantThroughputTimerSchema.INSTANCE;
+    }
+
+    @Override
+    public PropertiesAccessor<? extends ConstantThroughputTimer, ? extends ConstantThroughputTimerSchema> getProps() {
+        return new PropertiesAccessor<>(this, getSchema());
+    }
+
     /**
      * Sets the desired throughput.
      *
@@ -115,7 +128,7 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
      *            Desired sampling rate, in samples per minute.
      */
     public void setThroughput(double throughput) {
-        setProperty(new DoubleProperty(THROUGHPUT, throughput));
+        getSchema().getThroughput().set(this, throughput);
     }
 
     /**
@@ -124,18 +137,39 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
      * @return the rate at which samples should occur, in samples per minute.
      */
     public double getThroughput() {
-        return getPropertyAsDouble(THROUGHPUT);
+        return getSchema().getThroughput().get(this);
     }
 
+    @Deprecated
     @SuppressWarnings("EnumOrdinal")
     public int getCalcMode() {
-        return getPropertyAsInt(CALC_MODE, DEFAULT_CALC_MODE.ordinal());
+        Mode mode = getMode();
+        if (mode == null) {
+            mode = DEFAULT_CALC_MODE;
+        }
+        return mode.ordinal();
+    }
+
+    @API(status = API.Status.MAINTAINED, since = "6.0.0")
+    public Mode getMode() {
+        String value = getSchema().getCalcMode().get(this);
+        Mode enumValue = EnumUtils.valueOf(Mode.class, value);
+        if (enumValue != null) {
+            return enumValue;
+        }
+        return DEFAULT_CALC_MODE;
     }
 
+    @Deprecated
     @SuppressWarnings("EnumOrdinal")
     public void setCalcMode(int mode) {
-        Mode resolved = Mode.CACHED_VALUES[mode];
-        setProperty(new IntegerProperty(CALC_MODE, resolved.ordinal()));
+        setMode(EnumUtils.values(Mode.class).get(mode));
+    }
+
+    @SuppressWarnings("EnumOrdinal")
+    @API(status = API.Status.MAINTAINED, since = "6.0.0")
+    public void setMode(Mode newMode) {
+        getSchema().getCalcMode().set(this, newMode.toString());
     }
 
     /**
@@ -266,24 +300,12 @@ public class ConstantThroughputTimer extends AbstractTestElement implements Time
     public void setProperty(JMeterProperty property) {
         String propertyName = property.getName();
         if (propertyName.equals("calcMode")) {
-            String enumLabel = GenericTestBeanCustomizer.normalizeEnumStringValue(getClass(), Mode.class, property);
-            if (enumLabel != null && (!(property instanceof StringProperty) || !enumLabel.equals(property.getStringValue()))) {
-                super.setProperty(propertyName, enumLabel);
+            JMeterProperty mode = GenericTestBeanCustomizer.normalizeEnumProperty(getClass(), Mode.class, property);
+            if (mode != null) {
+                super.setProperty(mode);
                 return;
             }
         }
         super.setProperty(property);
     }
-
-    // For access from test code
-    Mode getMode() {
-        int mode = getCalcMode();
-        return Mode.CACHED_VALUES[mode];
-    }
-
-    // For access from test code
-    @SuppressWarnings("EnumOrdinal")
-    void setMode(Mode newMode) {
-        setCalcMode(newMode.ordinal());
-    }
 }
diff --git a/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java b/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java
index 0288460bb3..4f75ceaa70 100644
--- a/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java
+++ b/src/components/src/main/java/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java
@@ -32,14 +32,18 @@ public class ConstantThroughputTimerBeanInfo extends BeanInfoSupport {
 
         createPropertyGroup("delay",  //$NON-NLS-1$
                 new String[] { ConstantThroughputTimer.THROUGHPUT, //$NON-NLS-1$
-                ConstantThroughputTimer.CALC_MODE }); //$NON-NLS-1$
+                ConstantThroughputTimer.MODE }); //$NON-NLS-1$
 
         PropertyDescriptor p = property(ConstantThroughputTimer.THROUGHPUT); //$NON-NLS-1$
         p.setValue(NOT_UNDEFINED, true);
         p.setValue(DEFAULT, 0.0);
 
-        p = property(ConstantThroughputTimer.CALC_MODE, ConstantThroughputTimer.Mode.class); //$NON-NLS-1$
-        p.setValue(DEFAULT, ConstantThroughputTimer.Mode.ThisThreadOnly.ordinal());
+        // Hide old parameter that used index (setCalcMode(int); int getCalcMode())
+        p = property(ConstantThroughputTimer.CALC_MODE);
+        p.setHidden(true);
+
+        p = property(ConstantThroughputTimer.MODE, ConstantThroughputTimer.Mode.class); //$NON-NLS-1$
+        p.setValue(DEFAULT, ConstantThroughputTimer.Mode.ThisThreadOnly);
         p.setValue(NOT_UNDEFINED, true); // must be defined
     }
 
diff --git a/src/components/src/main/kotlin/org/apache/jmeter/timers/ConstantThroughputTimerSchema.kt b/src/components/src/main/kotlin/org/apache/jmeter/timers/ConstantThroughputTimerSchema.kt
new file mode 100644
index 0000000000..865e1b21b7
--- /dev/null
+++ b/src/components/src/main/kotlin/org/apache/jmeter/timers/ConstantThroughputTimerSchema.kt
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.timers
+
+import org.apache.jmeter.testelement.TestElementSchema
+import org.apache.jmeter.testelement.schema.DoublePropertyDescriptor
+import org.apache.jmeter.testelement.schema.StringPropertyDescriptor
+import org.apiguardian.api.API
+
+/**
+ * Lists properties of a [ConstantThroughputTimer].
+ * @see ConstantThroughputTimer
+ * @since 6.0
+ */
+@API(status = API.Status.EXPERIMENTAL, since = "6.0.0")
+public abstract class ConstantThroughputTimerSchema : TestElementSchema() {
+    public companion object INSTANCE : ConstantThroughputTimerSchema()
+
+    public val throughput: DoublePropertyDescriptor<ConstantThroughputTimerSchema>
+        by double("throughput")
+
+    public val calcMode: StringPropertyDescriptor<ConstantThroughputTimerSchema>
+        by string("calcMode")
+}
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources.properties
index 13851ae9e7..eb9a4e3439 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources.properties
@@ -20,7 +20,7 @@ calcMode.2=all active threads
 calcMode.3=all active threads in current thread group
 calcMode.4=all active threads (shared)
 calcMode.5=all active threads in current thread group (shared)
-calcMode.displayName=Calculate Throughput based on
+mode.displayName=Calculate Throughput based on
 calcMode.shortDescription=The Constant Throughput Timer used to delay each thread as though it was the only thread in the test.  Now, it calculates the delay taking into account the number of active threads in the test or the thread group.
 delay.displayName=Delay before each affected sampler
 displayName=Constant Throughput Timer
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_de.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_de.properties
index 314e49a21d..feef94cda3 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_de.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_de.properties
@@ -20,7 +20,7 @@ calcMode.2=Alle aktiven Threads
 calcMode.3=Alle aktiven Threads in der aktuellen Thread-Gruppe
 calcMode.4=Alle aktiven Threads (Gemeinsam)
 calcMode.5=Alle aktiven Threads in der aktuellen Thread-Gruppe (gemeinsam)
-calcMode.displayName=Berechne Durchsatz basierend auf
+mode.displayName=Berechne Durchsatz basierend auf
 calcMode.shortDescription=Es war der einzige Thread im Test. Nun wird die Pause unter Berücksichtigung der aktiven Threads oder der Thread-Gruppe berechnet.
 delay.displayName=Pause bevor eine Probe genommen wird
 displayName=Konstanter Durchsatz-Timer (Zeitgeber)
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_es.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_es.properties
index e565d811f3..62dde978fd 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_es.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_es.properties
@@ -19,7 +19,7 @@
 calcMode.1=solamente este hilo
 calcMode.2=todos los hilos activos
 calcMode.3=todos los hilos activos en el grupo de hilos actual
-calcMode.displayName=Calcular el rendimiento basado en
+mode.displayName=Calcular el rendimiento basado en
 calcMode.shortDescription=El Temporizador para Rendimiento Constante introducía un retardo como si este fuera el unico hilo en la prueba. Ahora calcula el retardo teniendo en cuenta el número de hilos activos en la prueba o el grupo de hilos.
 delay.displayName=Retardo antes de cada muestreador afectado
 displayName=Temporizador de Rendimiento Constante
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_fr.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_fr.properties
index 4cf3190c06..c122320e3e 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_fr.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_fr.properties
@@ -20,7 +20,7 @@ calcMode.2=toutes les unités actives
 calcMode.3=toutes les unités actives dans le groupe d'unités courant
 calcMode.4=toutes les unités actives (partagé)
 calcMode.5=toutes les unités actives dans le groupe d'unités courant (partagé)
-calcMode.displayName=Calculer le débit sur la base de
+mode.displayName=Calculer le débit sur la base de
 calcMode.shortDescription=Compteur de temps utilisé par le Compteur de débit constant pour décaler chaque thread comme s'il était le seul dans le test.  Maintenant, le délai est calculé en prenant en compte le nombre de threads actifs dans le test ou le groupe d'unités.
 delay.displayName=Délai avant chaque échantillon affecté
 displayName=Compteur de débit constant
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_ko.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_ko.properties
index 17ad6bcd8c..04728f1639 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_ko.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_ko.properties
@@ -20,7 +20,7 @@ calcMode.2=모든 활성화된 쓰레드들
 calcMode.3=현 쓰레드 그룹 내의 모든 활성화된 쓰레드들
 calcMode.4=모드 활성화된 쓰레드들 (공유)
 calcMode.5=현 쓰레드 그룹 내의 모든 활성화된 쓰레드들 (공유)
-calcMode.displayName=처리량을 다음에 기반하여\:
+mode.displayName=처리량을 다음에 기반하여\:
 calcMode.shortDescription=상수 처리량 타이머는, 마치 테스트에 단 하나의 쓰레드만 있는 것마냥, 각 쓰레드를 지연시키기 위해 사용됩니다. 단 실제 계산 시에는 전체 테스트 또는 쓰레드 그룹에 존재하는 활성화된 쓰레드들의 갯수를 고려하여 계산합니다.
 delay.displayName=영향을 받는 각 표본추출기 직전에 지연
 displayName=상수 처리량 타이머
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_pt_BR.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_pt_BR.properties
index a3d0b2d90e..6a9d12b97c 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_pt_BR.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_pt_BR.properties
@@ -20,7 +20,7 @@ calcMode.2=todos usuários virtuais (threads) ativos
 calcMode.3=todos usuários virtuais ativos no grupo de usuários corrente
 calcMode.4=todos usuários virtuais ativos (compartilhado)
 calcMode.5=todos usuários virtuais no grupo de usuários atual (compartillhado)
-calcMode.displayName=Calcular Vazão baseada em
+mode.displayName=Calcular Vazão baseada em
 calcMode.shortDescription=O Temporizador de Vazão Constante era usado para atrasar cada usuário virtual como se ele fosse o único usuário virtual no teste. Agora, ele calcula o atraso levando em consideração o número de usuários virtuais ativos no teste ou no grupo de usuários.
 delay.displayName=Atraso antes de cada testador afetado
 displayName=Temporizador de Vazão Constante
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_tr.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_tr.properties
index 7b230d2d26..4ee091bae3 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_tr.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_tr.properties
@@ -21,7 +21,7 @@ calcMode.2=bütün aktif iş parçacıkları
 calcMode.3=bu iş parçacığı grubundaki tüm aktif iş parçacıkları
 calcMode.4=tüm iş parçacıkları (paylaşımlı)
 calcMode.5=bu iş paçacığı grubundaki tüm aktif iş parçacıkları (paylaşımlı)
-calcMode.displayName=transfer oranı hesabının yapılacağı temel
+mode.displayName=transfer oranı hesabının yapılacağı temel
 calcMode.shortDescription=Sabit Transfer Oranı Zamanlayıcı eskiden her bir iş parçacığı için, testteki tek iş parçacığıymışcasına gecikirken; şimdi gecikme hesabı testteki veya iş parçacığı grubundaki aktif iş parçacığı sayısına göre yapılmakta.
 delay.displayName=Etkilenen her örnekleyiciden önce gecikme
 displayName=Sabit Transfer Oranı Zamanlayıcı
diff --git a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_zh_CN.properties b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_zh_CN.properties
index e541a0a3a3..4da2ad9509 100644
--- a/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_zh_CN.properties
+++ b/src/components/src/main/resources/org/apache/jmeter/timers/ConstantThroughputTimerResources_zh_CN.properties
@@ -21,7 +21,7 @@ calcMode.2=所有活动线程
 calcMode.3=当前线程组中的所有活动线程
 calcMode.4=所有活动线程(共享)
 calcMode.5=当前线程组中的所有活动线程(共享)
-calcMode.displayName=基于计算吞吐量
+mode.displayName=基于计算吞吐量
 calcMode.shortDescription=用于延迟每个线程的恒定吞吐量定时器,就好像它是测试中唯一的线程一样。现在,它根据测试或线程组的活动线程的数量计算延迟。
 delay.displayName=在每个受影响的采样器之前延迟
 displayName=常数吞吐量定时器
diff --git a/src/components/src/test/java/org/apache/jmeter/timers/ConstantThroughputTimerTest.java b/src/components/src/test/java/org/apache/jmeter/timers/ConstantThroughputTimerTest.java
index 38e6e511fc..640e6fa9f5 100644
--- a/src/components/src/test/java/org/apache/jmeter/timers/ConstantThroughputTimerTest.java
+++ b/src/components/src/test/java/org/apache/jmeter/timers/ConstantThroughputTimerTest.java
@@ -34,7 +34,10 @@ class ConstantThroughputTimerTest {
     @Test
     void testTimer1() throws Exception {
         ConstantThroughputTimer timer = new ConstantThroughputTimer();
-        assertEquals(0, timer.getCalcMode());// Assume this thread only
+        @SuppressWarnings("deprecation")
+        int calcMode = timer.getCalcMode();
+        assertEquals(0, calcMode);// Assume this thread only
+        assertEquals(ConstantThroughputTimer.Mode.ThisThreadOnly, timer.getMode());// Assume this thread only
         timer.setThroughput(60.0);// 1 per second
         long start = System.currentTimeMillis();
         long delay = timer.delay(); // Initialise
@@ -64,7 +67,9 @@ class ConstantThroughputTimerTest {
     @Test
     void testTimer2() throws Exception {
         ConstantThroughputTimer timer = new ConstantThroughputTimer();
-        assertEquals(0, timer.getCalcMode());// Assume this thread only
+        @SuppressWarnings("deprecation")
+        int calcMode = timer.getCalcMode();
+        assertEquals(0, calcMode);// Assume this thread only
         timer.setThroughput(60.0);// 1 per second
         assertEquals(1000, timer.calculateCurrentTarget(0)); // Should delay for 1 second
         timer.setThroughput(60000.0);// 1 per milli-second
@@ -75,7 +80,10 @@ class ConstantThroughputTimerTest {
     void testTimer3() throws Exception {
         ConstantThroughputTimer timer = new ConstantThroughputTimer();
         timer.setMode(ConstantThroughputTimer.Mode.AllActiveThreads); //$NON-NLS-1$ - all threads
-        assertEquals(1, timer.getCalcMode());// All threads
+        @SuppressWarnings("deprecation")
+        int calcMode = timer.getCalcMode();
+        assertEquals(1, calcMode);// All threads
+        assertEquals(ConstantThroughputTimer.Mode.AllActiveThreads, timer.getMode());// All threads
         for(int i=1; i<=10; i++){
             TestJMeterContextService.incrNumberOfThreads();
         }