<?xml version="1.0" encoding="utf-8"?>
<!--

    This file is

    Copyright 2007,2008,2009,2010 Rustici Software, LLC
    Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com)

-->
<Class xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:www.twigletsoftware.com:schemas:txtemplate:1:0">
  <Imports />
  <Java>String</Java>
  <Name>System.String</Name>
  <Uses />
  <Inherits>
    <Type>System.Object</Type>
  </Inherits>
  <Iterable>
    <ElementType>System.Char</ElementType>
    <Java>${expr}.toCharArray()</Java>
  </Iterable>
  <Methods>
    <!-- see http://msdn.microsoft.com/en-us/library/dd465121.aspx for string comparison details -->
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Compare(${arg1}, ${arg2})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg1</Name>
        </Param>
        <Param>
          <Type>System.String</Type>
          <Name>arg2</Name>
        </Param>
      </Params>
      <Name>Compare</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Compare(${arg1}, ${this})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg1</Name>
        </Param>
      </Params>
      <Name>CompareTo</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Compare(${arg1}, ${arg2}, ${isCaseSensitive})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg1</Name>
        </Param>
        <Param>
          <Type>System.String</Type>
          <Name>arg2</Name>
        </Param>
        <Param>
          <Type>System.Bool</Type>
          <Name>isCaseSensitive</Name>
        </Param>
      </Params>
      <Name>Compare</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${arg1}.toString().concat(${arg2}.toString())</Java>
      <Params>
        <Param>
          <Type>System.Object</Type>
          <Name>arg1</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg2</Name>
        </Param>
      </Params>
      <Name>Concat</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.contains(${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>Contains</Name>
      <Return>System.Boolean</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.endsWith(${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>EndsWith</Name>
      <Return>System.Boolean</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>String.format(StringSupport.CSFmtStrToJFmtStr(${fmt}),${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>fmt</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>Format</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>String.format(StringSupport.CSFmtStrToJFmtStr(${fmt}),${arg1},${arg2})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>fmt</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg1</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg2</Name>
        </Param>
      </Params>
      <Name>Format</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>String.format(StringSupport.CSFmtStrToJFmtStr(${fmt}),${arg1},${arg2},${arg3})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>fmt</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg1</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg2</Name>
        </Param>
        <Param>
          <Type>System.Object</Type>
          <Name>arg3</Name>
        </Param>
      </Params>
      <Name>Format</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.indexOf(${arg})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>IndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.indexOf(${arg}, ${start})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>arg</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
      </Params>
      <Name>IndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.indexOf(${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>IndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.indexOf(${arg}, ${start})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
      </Params>
      <Name>IndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.isNullOrEmpty(${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>IsNullOrEmpty</Name>
      <Return>System.Boolean</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.join(${value}, ${separator})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>separator</Name>
        </Param>
        <Param>
          <Type>System.String[]</Type>
          <Name>value</Name>
        </Param>
      </Params>
      <Name>Join</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.lastIndexOfAny(${this},${anyOf})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>anyOf</Name>
        </Param>
      </Params>
      <Name>LastIndexOfAny</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.lastIndexOf(${arg})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>LastIndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.lastIndexOf(${arg},${start})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>arg</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
      </Params>
      <Name>LastIndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.lastIndexOf(${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>LastIndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.lastIndexOf(${arg},${start})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
      </Params>
      <Name>LastIndexOf</Name>
      <Return>System.Int32</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.PadLeft(${this}, ${totalWidth})</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>totalWidth</Name>
        </Param>
      </Params>
      <Name>PadLeft</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.PadLeft(${this}, ${totalWidth}, ${paddingChar})</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>totalWidth</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>paddingChar</Name>
        </Param>
      </Params>
      <Name>PadLeft</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.PadRight(${this}, ${totalWidth})</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>totalWidth</Name>
        </Param>
      </Params>
      <Name>PadRight</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.PadRight(${this}, ${totalWidth}, ${paddingChar})</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>totalWidth</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>paddingChar</Name>
        </Param>
      </Params>
      <Name>PadRight</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.replace(${old}, ${new})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>old</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>new</Name>
        </Param>
      </Params>
      <Name>Replace</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.replace(${old}, ${new})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>old</Name>
        </Param>
        <Param>
          <Type>System.String</Type>
          <Name>new</Name>
        </Param>
      </Params>
      <Name>Replace</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Split(${this}, ${ch})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>ch</Name>
        </Param>
      </Params>
      <Name>Split</Name>
      <Return>System.String[]</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Split(${this}, ${ch1}, ${ch2})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>ch1</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>ch2</Name>
        </Param>
      </Params>
      <Name>Split</Name>
      <Return>System.String[]</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>${this:16}.split(StringSupport.charAltsToRegex(${cs}))</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>cs</Name>
        </Param>
      </Params>
      <Name>Split</Name>
      <Return>System.String[]</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>${this:16}.split(StringSupport.charAltsToRegex(${cs}), ${count})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>cs</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>count</Name>
        </Param>
      </Params>
      <Name>Split</Name>
      <Return>System.String[]</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Split(${this}, ${cs}, ${options})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>cs</Name>
        </Param>
        <Param>
          <Type>System.StringSplitOptions</Type>
          <Name>options</Name>
        </Param>
      </Params>
      <Name>Split</Name>
      <Return>System.String[]</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Split(${this}, ${ss}, ${options})</Java>
      <Params>
        <Param>
          <Type>System.String[]</Type>
          <Name>ss</Name>
        </Param>
        <Param>
          <Type>System.StringSplitOptions</Type>
          <Name>options</Name>
        </Param>
      </Params>
      <Name>Split</Name>
      <Return>System.String[]</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.startsWith(${arg})</Java>
      <Params>
        <Param>
          <Type>System.String</Type>
          <Name>arg</Name>
        </Param>
      </Params>
      <Name>StartsWith</Name>
      <Return>System.Boolean</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.substring(${start})</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
      </Params>
      <Name>Substring</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.substring(${start}, (${start}) + (${length}))</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>length</Name>
        </Param>
      </Params>
      <Name>Substring</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.toCharArray()</Java>
      <Params />
      <Name>ToCharArray</Name>
      <Return>System.Char[]</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.substring(${start}, ${end}).toCharArray()</Java>
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>start</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>end</Name>
        </Param>
      </Params>
      <Name>ToCharArray</Name>
      <Return>System.Char[]</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.toLowerCase()</Java>
      <Params />
      <Name>ToLower</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.toUpperCase()</Java>
      <Params />
      <Name>ToUpper</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.toLowerCase()</Java>
      <Params />
      <Name>ToLowerInvariant</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports />
      <Java>${this:16}.toUpperCase()</Java>
      <Params />
      <Name>ToUpperInvariant</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Trim(${this})</Java>
      <Params />
      <Name>Trim</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Trim(${this}, ${trimChars})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>trimChars</Name>
        </Param>
      </Params>
      <Name>Trim</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Trim(${this}, new char[] {${trimChar1}})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar1</Name>
        </Param>
      </Params>
      <Name>Trim</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.Trim(${this}, new char[] {${trimChar1}, ${trimChar2}})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar1</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar2</Name>
        </Param>
      </Params>
      <Name>Trim</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimStart(${this}, null)</Java>
      <Params />
      <Name>TrimStart</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimStart(${this}, ${trimChars})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>trimChars</Name>
        </Param>
      </Params>
      <Name>TrimStart</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimStart(${this}, new char[] {${trimChar1}})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar1</Name>
        </Param>
      </Params>
      <Name>TrimStart</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimStart(${this}, new char[] {${trimChar1}, ${trimChar2}})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar1</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar2</Name>
        </Param>
      </Params>
      <Name>TrimStart</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimEnd(${this}, null)</Java>
      <Params />
      <Name>TrimEnd</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimEnd(${this}, ${trimChars})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>trimChars</Name>
        </Param>
      </Params>
      <Name>TrimEnd</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimEnd(${this}, new char[] {${trimChar1}})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar1</Name>
        </Param>
      </Params>
      <Name>TrimEnd</Name>
      <Return>System.String</Return>
    </Method>
    <Method>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.TrimEnd(${this}, new char[] {${trimChar1}, ${trimChar2}})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar1</Name>
        </Param>
        <Param>
          <Type>System.Char</Type>
          <Name>trimChar2</Name>
        </Param>
      </Params>
      <Name>TrimEnd</Name>
      <Return>System.String</Return>
    </Method>
  </Methods>
  <Properties>
    <Property>
      <Imports />
      <Java>${this:16}.length()</Java>
      <Type>System.Int32</Type>
      <Name>Length</Name>
      <Get>${this:16}.length()</Get>
      <Set>${this:16}.setLength(${value})</Set>
    </Property>
    <Property>
      <Imports />
      <Java>""</Java>
      <Type>System.String</Type>
      <Name>Empty</Name>
      <Get>""</Get>
      <Set>${this:16}.setEmpty(${value})</Set>
    </Property>
  </Properties>
  <Events />
  <Indexers>
    <Indexer>
      <Imports />
      <Params>
        <Param>
          <Type>System.Int32</Type>
          <Name>i</Name>
        </Param>
      </Params>
      <Type>System.Char</Type>
      <Get>${this:16}.charAt(${i})</Get>
    </Indexer>
  </Indexers>
  <Constructors>
    <Constructor>
      <Imports>
        <Import>CS2JNet.System.StringSupport</Import>
      </Imports>
      <Java>StringSupport.mkString(${char}, ${length})</Java>
      <Params>
        <Param>
          <Type>System.Char</Type>
          <Name>char</Name>
        </Param>
        <Param>
          <Type>System.Int32</Type>
          <Name>length</Name>
        </Param>
      </Params>
    </Constructor>
    <Constructor>
      <Imports />
      <Java>new String(${str})</Java>
      <Params>
        <Param>
          <Type>System.Char[]</Type>
          <Name>str</Name>
        </Param>
      </Params>
    </Constructor>
  </Constructors>
  <Fields />
  <Casts />
  <UnaryOps />
  <BinaryOps />
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>rVLfYypB1KKJxQBDiCZeDLU6EnQ=</DigestValue></Reference></SignedInfo><SignatureValue>Xi1CjGDRoz1y7pq3fROphjMCumlRfvLBEI8hhsKF3/jkSt3qXVV0mtBDrxm7HPaJYyofgNhvl2V5Q+oNVulnpOLd55c77ztzSFhDDl3fH/B0wsZEqi6tW9z1aPy7qu1EPgXGJAO3wiFPJAjuyxBINvyxc6KHf68JuCWwKPiMvfM=</SignatureValue></Signature></Class>