image
 
image
XString.java


/*::.
==================================================================================================================================
=================================================¦ Copyright © 2007 Allen Baker ¦=================================================
                                                 +------------------------------+
File:       XString.java
Originator: Allen Baker (2007.01.20 20:53)
LayoutRev:  5
================================================================================================================================== */



/*.
==========================================================================================
Package
------------------------------------------------------------------------------------------ */
package cosmicabyss.com.lib;



/*.
==========================================================================================
Imports
------------------------------------------------------------------------------------------ */
import java.io.*;
import java.util.*;
import java.nio.charset.*;
import java.util.regex.*;
import java.util.Iterator;


/*::
======================================================================================================================== *//**
This class is intended to act as a full, and more powerful replacement for Java's String class.<P>

The Java String class (String) is final, meaning that you cannot add methods to it or improve it in any way by creating
a subclass of it. This is an annoyance because it forces the user to create a separate String utility class containing
any additional methods the user needs for Strings, and to then switch back and forth between the String class and the
String utility class.<P>

This class provides methods that are equivalent to all the String class's instance and static methods. In other words,
it replicates the String class's entire API. As an improvement over the String class, the methods of this class accept
generic types in place of Java's String parameter. This means that objects of any class that can be converted into a
String can be passed into any of the XString methods where the corresponding String method requires Strings.<P>

XString goes further by providing additional methods not found in the String class. These additional methods greatly
extend the power of XString beyond that of String.<P>

Taken together, the above mentioned characteristics of XString result in a class that can be used as a more powerful
replacement for the String class. The one thing that is lost when using XString instead of String is Java's support for
direct assignment of String literals to String variables. XString does not have this support and all XStrings must be
created with an XString constructor. For example, the following code:<P>
   <BLOCKQUOTE>
      <PRE id="unindent">
         String exampleString = "This is a test";
         someClass.someMethodThatTakesAStringParameter(exampleString);
      </PRE>
   </BLOCKQUOTE>

Would have to change as follows when using XString as a substitute for String:
   <BLOCKQUOTE>
      <PRE id="unindent">
         XString exampleString = new XString("This is a test");
         someClass.someMethodThatTakesAStringParameter(exampleString.toString());
      </PRE>
   </BLOCKQUOTE>

The most obvious differences between this class and the standard Java String class are:<P>
   <BLOCKQUOTE>
      => Unlike the String class, this XString class is not final. Therefore, it is possible to add methods to it at any
         Time.<BR>
      => Most of the methods of this class take generic parameters where the corresponding methods of the standard Java
         String class would take concrete parameter types.<BR>
      => While providing exactly the same methods as the String class, this class also offers numerous additional
         Methods That make XStrings much more powerful than Strings.<BR>
      => This class provides case-insensitive versions of many of the String class methods. These are named by appending
         "IgnoreCase" to the end of the method name.
   </BLOCKQUOTE>

<P>
   <DL>
      <DT>
         <B>
            Example usage:
         </B>
         <DD>
            <BLOCKQUOTE>
               <PRE id="unindent">
                  no example provided
               </PRE>
            </BLOCKQUOTE>
         </DD>
      </DT>
      <DT>
         <B>
            View Source:
         </B>
         <DD>
            <A href="XString.java.html">
               xString.java
            </A>
         </DD>
      </DT>
      <DT>
         <B>
            Author:
         </B>
         <DD>
            <A href="mailto:sourcecode.v01@cosmicabyss.com">
               Allen Baker
            </A>
         </DD>
      </DT>
   </DL>
*//*
======================================================================================================================== */
public class XString implements java.io.Serializable, Comparable<XString>, CharSequence
   {



   /*.
   ==========================================================================================
   Class Constants
      EMPTY:
         An empty XString ""
      DFLT_LINE_LEN:
         The width of the current console window in characters
   ------------------------------------------------------------------------------------------ */
   public  static final XString  EMPTY         = new XString("");
   private static final int      DFLT_LINE_LEN = ConsoleMessage.defaultLineLength();



   /*:                                    :METHOD:000:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an XString representation of pStr.<P>

   If pStr is a File, this method creates an XString containing the content of the file decoded from
   bytes to characters using the platform's default charset.<P>

   Char[] and byte[] are handled differently than all other arrays of primitive types.<P>

   A char[] is converted directly into an XString where each char[] element is represented as one
   character. So a char[] containing these elements: 'a', 'b', 'c' would be converted to this XString:
   "abc".<P>

   A byte[] is converted directly into an XString where each byte[] element is represented as two
   characters. So a byte[] containing these elements: (97 << 4) & 98, (99 << 4) & 100 would be
   converted to this XString: "abcd".<P>

   All other arrays of primitive types are represented as comma separated lists of their elements. For
   example, an int[] containing these elements: 1, 2, 3 would be converted to this XString: [1, 2, 3]

   <P><B>Implementation: </B><A HREF="XString.java.html#000">View source</A>

   @return
      A new XString containing the XString representation of pStr

   @param
      pStr is the primitive type value or object whose XString representation will be returned. If pStr
      is a File, the entire content of the File is returned as an XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString(Type1 pStr)
      {
      iOrignlStr = UString.toString(pStr);
      }



   /*:.
   ==============================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  The String API  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ============================================================================================================== */



   /*:                                    :METHOD:001:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#001">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int length()
      {
      return UString.length(this.iOrignlStr);
      }



   /*:                                    :METHOD:002:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#002">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isEmpty()
      {
      return UString.isEmpty(this.iOrignlStr);
      }



   /*:                                    :METHOD:003:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#003">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public char charAt(int index)
      {
      return UString.charAt(this.iOrignlStr,index);
      }



   /*:                                    :METHOD:004:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#004">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int codePointAt(int index)
      {
      return UString.codePointAt(this.iOrignlStr,index);
      }



   /*:                                    :METHOD:005:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#005">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int codePointBefore(int index)
      {
      return UString.codePointBefore(this.iOrignlStr,index);
      }



   /*:                                    :METHOD:006:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#006">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int codePointCount(int beginIndex, int endIndex)
      {
      return UString.codePointCount(this.iOrignlStr,beginIndex,endIndex);
      }



   /*:                                    :METHOD:007:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#007">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int offsetByCodePoints(int index, int codePointOffset)
      {
      return UString.offsetByCodePoints(this.iOrignlStr,index,codePointOffset);
      }



   /*:                                    :METHOD:008:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#008">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
      {
      UString.getChars(this.iOrignlStr,srcBegin,srcEnd,dst,dstBegin);
      }



   /*:                                    :METHOD:009:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#009">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
      {
      return UString.getBytes(this.iOrignlStr,charsetName);
      }



   /*:                                    :METHOD:010:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#010">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public byte[] getBytes(Charset charset)
      {
      return UString.getBytes(this.iOrignlStr,charset);
      }



   /*:                                    :METHOD:011:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#011">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> byte[] getBytes(Type1 charsetName) throws UnsupportedEncodingException
      {
      return UString.getBytes(this.iOrignlStr,charsetName);
      }



   /*:                                    :METHOD:012:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#012">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public byte[] getBytes()
      {
      return UString.getBytes(this.iOrignlStr);
      }



   /*:                                    :METHOD:013:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#013">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean equals(Object anObject)
      {
      if (anObject instanceof XString)
         {
         String  s = ((XString)anObject).string();
         return UString.equals(this.iOrignlStr,s);
         }
      return UString.equals(this.iOrignlStr,anObject);
      }



   /*:                                    :METHOD:014:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#014">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean contentEquals(StringBuffer sb)
      {
      return UString.contentEquals(this.iOrignlStr,sb);
      }



   /*:                                    :METHOD:015:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#015">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean contentEquals(CharSequence cs)
      {
      return UString.contentEquals(this.iOrignlStr,cs);
      }



   /*:                                    :METHOD:016:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#016">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean equalsIgnoreCase(Type1 anotherString)
      {
      if (anotherString instanceof XString)
         {
         String  s = ((XString)anotherString).string();
         return UString.equalsIgnoreCase(this.iOrignlStr,s);
         }
      return UString.equalsIgnoreCase(this.iOrignlStr,anotherString);
      }



   /*:                                    :METHOD:017:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#017">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int compareTo(XString anotherString)
      {
      return UString.compareTo(this.iOrignlStr,anotherString);
      }



   /*:                                    :METHOD:018:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#018">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int compareToIgnoreCase(Type1 other)
      {
      return UString.compareToIgnoreCase(this.iOrignlStr,other);
      }



   /*:                                    :METHOD:019:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#019">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean regionMatches(int toffset, Type1 other, int ooffset, int len)
      {
      return UString.regionMatches(this.iOrignlStr,toffset,other,ooffset,len);
      }



   /*:                                    :METHOD:020:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#020">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean regionMatches(boolean ignoreCase, int toffset, Type1 other, int ooffset, int len)
      {
      return UString.regionMatches(this.iOrignlStr,ignoreCase,toffset,other,ooffset,len);
      }



   /*:                                    :METHOD:021:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#021">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean startsWith(Type1 prefix, int toffset)
      {
      return UString.startsWith(this.iOrignlStr,prefix,toffset);
      }



   /*:                                    :METHOD:022:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#022">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean startsWith(Type1 prefix)
      {
      return UString.startsWith(this.iOrignlStr,prefix);
      }



   /*:                                    :METHOD:023:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#023">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean endsWith(Type1 suffix)
      {
      return UString.endsWith(this.iOrignlStr,suffix);
      }



   /*:                                    :METHOD:024:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#024">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int hashCode()
      {
      return UString.hashCode(this.iOrignlStr);
      }



   /*:                                    :METHOD:025:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#025">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int indexOf(int ch)
      {
      return UString.indexOf(this.iOrignlStr,ch);
      }



   /*:                                    :METHOD:026:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#026">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int indexOf(int ch, int fromIndex)
      {
      return UString.indexOf(this.iOrignlStr,ch,fromIndex);
      }



   /*:                                    :METHOD:027:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#027">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int lastIndexOf(int ch)
      {
      return UString.lastIndexOf(this.iOrignlStr,ch);
      }



   /*:                                    :METHOD:028:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#028">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int lastIndexOf(int ch, int fromIndex)
      {
      return UString.lastIndexOf(this.iOrignlStr,ch,fromIndex);
      }



   /*:                                    :METHOD:029:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#029">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int indexOf(Type1 other)
      {
      return UString.indexOf(this.iOrignlStr,other);
      }



   /*:                                    :METHOD:030:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#030">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int indexOf(Type1 other, int fromIndex)
      {
      return UString.indexOf(this.iOrignlStr,other,fromIndex);
      }



   /*:                                    :METHOD:031:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#031">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int lastIndexOf(Type1 other)
      {
      return UString.lastIndexOf(this.iOrignlStr,other);
      }



   /*:                                    :METHOD:032:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#032">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int lastIndexOf(Type1 other, int fromIndex)
      {
      return UString.lastIndexOf(this.iOrignlStr,other,fromIndex);
      }



   /*:                                    :METHOD:033:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#033">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString substring(int beginIndex)
      {
      return new XString(UString.substring(this.iOrignlStr,beginIndex));
      }



   /*:                                    :METHOD:034:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#034">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString substring(int beginIndex, int endIndex)
      {
      return new XString(UString.substring(this.iOrignlStr,beginIndex,endIndex));
      }



   /*:                                    :METHOD:035:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#035">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CharSequence subSequence(int beginIndex, int endIndex)
      {
      return UString.subSequence(this.iOrignlStr,beginIndex,endIndex);
      }



   /*:                                    :METHOD:036:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#036">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString concat(Type1 other)
      {
      return new XString(UString.concat(this.iOrignlStr,other));
      }



   /*:                                    :METHOD:037:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#037">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString replace(char oldChar, char newChar)
      {
      return new XString(UString.replace(this.iOrignlStr,oldChar,newChar));
      }



   /*:                                    :METHOD:038:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#038">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean matches(Type1 regex)
      {
      return UString.matches(this.iOrignlStr,regex);
      }



   /*:                                    :METHOD:039:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#039">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean contains(CharSequence s)
      {
      return UString.contains(this.iOrignlStr,s);
      }
   public <Type1> boolean contains(Type1 s)
      {
      return UString.contains(this.iOrignlStr,s);
      }



   /*:                                    :METHOD:040:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method replaces instances of substrings matching the regular expression in regex with a string
   generated from the regular expression in replacement.<P>

   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#040">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString replaceFirst(Type1 regex, Type2 replacement)
      {
      return new XString(UString.replaceFirst(this.iOrignlStr,regex,replacement));
      }



   /*:                                    :METHOD:041:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method replaces instances of substrings matching the regular expression in regex with a string
   generated from the regular expression in replacement.<P>

   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#041">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString replaceAll(Type1 regex, Type2 replacement)
      {
      return new XString(UString.replaceAll(this.iOrignlStr,regex,replacement));
      }



   /*:                                    :METHOD:042:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#042">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString replace(CharSequence target, CharSequence replacement)
      {
      return new XString(UString.replace(this.iOrignlStr,target,replacement));
      }



   /*:                                    :METHOD:043:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#043">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString[] split(Type1 regex, int limit)
      {
      return XString.toXStringArray(UString.split(this.iOrignlStr,regex,limit));
      }



   /*:                                    :METHOD:044:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#044">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString[] split(Type1 regex)
      {
      return XString.toXStringArray(UString.split(this.iOrignlStr,regex));
      }



   /*:                                    :METHOD:045:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#045">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString toLowerCase(Locale locale)
      {
      return new XString(UString.toLowerCase(this.iOrignlStr,locale));
      }



   /*:                                    :METHOD:046:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#046">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString toLowerCase()
      {
      return new XString(UString.toLowerCase(this.iOrignlStr));
      }



   /*:                                    :METHOD:047:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#047">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString toUpperCase(Locale locale)
      {
      return new XString(UString.toUpperCase(this.iOrignlStr,locale));
      }



   /*:                                    :METHOD:048:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#048">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString toUpperCase()
      {
      return new XString(UString.toUpperCase(this.iOrignlStr));
      }



   /*:                                    :METHOD:049:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#049">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString trim()
      {
      return new XString(UString.trim(this.iOrignlStr));
      }



   /*:                                    :METHOD:050:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#050">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public String toString()
      {
      return this.iOrignlStr;
      }



   /*:                                    :METHOD:051:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#051">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public char[] toCharArray()
      {
      return UString.toCharArray(this.iOrignlStr);
      }



   /*:                                    :METHOD:052:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#052">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString intern()
      {
      return new XString(UString.intern(this.iOrignlStr));
      }



   /*:.
   ==============================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  The Extensions  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ============================================================================================================== */



   /*:                                    :METHOD:053:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns this object as a String and is equivalent to the toString() method.

   <P><B>Implementation: </B><A HREF="XString.java.html#053">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public String string()
      {
      return this.iOrignlStr;
      }



   /*:                                    :METHOD:054:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns true if, and only if, this XString is either null or empty (i.e. "").
      <BLOCKQUOTE>
         Note: The isEmpty() method in Java's standard String class returns true if, and only if, the
               String is <B><I>not null</I></B> and is empty (i.e. ""); otherwise, it returns false. If
               it is passed a null reference, it will throw a NullPointerException.<P>
         Note: This method is not equivalent to the isEmpty() method in Java's standard String class.
               Although it is non-standard usage, it IS POSSIBLE For an XString instance to exist (i.e.
               Not be null) AND for its internal String TO BE null. This can happen by this code for
               example:

                  <BLOCKQUOTE>
                     <PRE id="unindent">
                        XString nullInternalString = new XString(null);
                     </PRE>
                  </BLOCKQUOTE>
      </BLOCKQUOTE>


   <P><B>Implementation: </B><A HREF="XString.java.html#054">View source</A>

   @return
      This method returns true if, and only if, this XString is either null or empty (i.e. "");
      otherwise, it returns false.

   @param
      pStr is the Object whose String representation is tested.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isNullOrEmpty()
      {
      return (UString.isNullOrEmpty(this));
      }



   /*:                                    :METHOD:055:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns true if, and only if, this XString is either null, or empty (i.e. ""),.or
   contains only whitespace.
      <BLOCKQUOTE>
         Note: The isEmpty() method in Java's standard String class returns true if, and only if, the
               String is <B><I>not null</I></B> and is empty (i.e. ""); otherwise, it returns false. If
               it is passed a null reference, it will throw a NullPointerException.<P>
         Note: Although it is non-standard usage, it IS POSSIBLE For an XString instance to exist (i.e.
               Not be null) AND for its internal String TO BE null. This can happen by this code for
               example:
                  <BLOCKQUOTE>
                     <PRE id="unindent">
                        XString nullInternalString = new XString(null);
                     </PRE>
                  </BLOCKQUOTE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#055">View source</A>

   @return
      This method returns true if, and only if, this XString is either null, or empty (i.e. ""),.or
      contains only whitespace; otherwise, it returns false.

   @param
      pStr is the Object whose String representation is tested.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isNullOrEmptyOrWhitespace()
      {
      return (UString.isNullOrEmptyOrWhitespace(this));
      }



   /*:                                    :METHOD:056:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns true if, and only if, this XString is not null, and not empty (i.e. ""),.but
   contains only whitespace.
      <BLOCKQUOTE>
         Note: The isEmpty() method in Java's standard String class returns true if, and only if, the
               String is <B><I>not null</I></B> and is empty (i.e. ""); otherwise, it returns false. If
               it is passed a null reference, it will throw a NullPointerException.
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#056">View source</A>

   @return
      This method returns true if, and only if, this XString is not null, and not empty (i.e. ""),.but
      contains only whitespace; otherwise, it returns false.

   @param
      pStr is the Object whose XString representation is tested.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isNonEmptyWhitespace()
      {
      return (UString.isNonEmptyWhitespace(this));
      }



   /*:                                    :METHOD:057:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method determins if all the letters in this XString are upper case or not. Digits and all other
   non-letters are ignored and do not effect the outcome of this method().

   <P><B>Implementation: </B><A HREF="XString.java.html#057">View source</A>

   @return
      This method returns true if all the letters in this XString are upper case, otherwise, it returns
      false.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isAllUpperCase()
      {
      return UString.isAllUpperCase(this.iOrignlStr);
      }



   /*:                                    :METHOD:058:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method determins if all the letters in this XSting are lower case or not. Digits and all other
   non-letters are ignored and do not effect the outcome of this method().

   <P><B>Implementation: </B><A HREF="XString.java.html#058">View source</A>

   @return
      This method returns true if all the letters in this XString are lower case, otherwise, it returns
      false.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isAllLowerCase()
      {
      return UString.isAllLowerCase(this.iOrignlStr);
      }



   /*:                                    :METHOD:059:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns an XString containing the SET of characters that are in this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#059">View source</A>

   @return
      A reference to a new XString containing the SET of characters that are in this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString charSet()
      {
      return new XString(UString.charSet(this.iOrignlStr));
      }



   /*:                                    :METHOD:060:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns an XString containing the SET of characters that are in this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#060">View source</A>

   @return
      A reference to a new XString containing the SET of characters that are in this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString charSetIgnoreCase()
      {
      return new XString(UString.charSetIgnoreCase(this.iOrignlStr));
      }



   /*:                                    :METHOD:061:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method adds pPrefix to the beginning of this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#061">View source</A>

   @return
      A new XString comopsed as pPrefix + this

   @param
      pPrefix is the Object whose XString representation is added to the beginning of this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString appendPrefix(Type1 pPrefix)
      {
      return new XString(UString.appendPrefix(this.iOrignlStr,pPrefix));
      }



   /*:                                    :METHOD:062:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method adds pSuffix to the endning of this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#062">View source</A>

   @return
      A new XString comopsed as this + pSuffix

   @param
      pSuffix is the Object whose XString representation is added to the ending of this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString appendSuffix(Type1 pSuffix)
      {
      return new XString(UString.appendSuffix(this.iOrignlStr,pSuffix));
      }



   /*:                                    :METHOD:063:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes a leading and trailing substring from this XString.
      <BLOCKQUOTE>
         For example, if a this method were called as follows:
            <BLOCKQUOTE>
               <PRE id="unindent">
                  trim("XX-some other chars-xx", "XX")
               </PRE>
            </BLOCKQUOTE>
        Then this method would return an XString comprising this sequence of characters:
           <BLOCKQUOTE>
              <PRE id="unindent">
                  "-some other chars-xx"
              </PRE>
           </BLOCKQUOTE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#063">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading and trailing substring
      removed.

   @param
      pPrefixSuffix is the Object whose XString representation is the substring that will be trimmed
      from the left and right of this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trim(Type1 pPrefixSuffix)
      {
      return new XString(UString.trim(this.iOrignlStr, pPrefixSuffix));
      }



   /*:                                    :METHOD:064:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes a leading and trailing substring from this XString, ignoring case.
      <BLOCKQUOTE>
         For example, if a this method were called as follows:
            <BLOCKQUOTE>
               <PRE id="unindent">
                  trimIgnoreCase("XX-some other chars-xx", "XX")
               </PRE>
            </BLOCKQUOTE>
        Then this method would return an XString comprising this sequence of characters:
           <BLOCKQUOTE>
              <PRE id="unindent">
                  "-some other chars-"
              </PRE>
           </BLOCKQUOTE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#064">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading and trailing substring
      removed.

   @param
      pPrefixSuffix is the Object whose XString representation is the substring that will be trimmed
      from the left and right of this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimIgnoreCase(Type1 pPrefixSuffix)
      {
      return new XString(UString.trimIgnoreCase(this.iOrignlStr, pPrefixSuffix));
      }



   /*:                                    :METHOD:065:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the characters that are in a character set from the beginning and the end of
   this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#065">View source</A>

   @return
      A new String that is equivalent to the this XString but with the leading and trailing character
      set characters removed.

   @param
      pCharset is the Object whose String representation is used as the set of characters to remove.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimCharset(Type1 pCharset)
      {
      return new XString(UString.trimCharset(this.iOrignlStr, pCharset));
      }



   /*:                                    :METHOD:066:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the characters that are in a character set from the beginning and the end of
   this XString, ignoring case.

   <P><B>Implementation: </B><A HREF="XString.java.html#066">View source</A>

   @return
      A new String that is equivalent to the this XString but with the leading and trailing character
      set characters removed.

   @param
      pCharset is the Object whose String representation is used as the set of characters to remove.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimCharsetIgnoreCase(Type1 pCharset)
      {
      return new XString(UString.trimCharsetIgnoreCase(this.iOrignlStr, pCharset));
      }



   /*:                                    :METHOD:067:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the characters that are in a character set from the beginning of the String
   representation of pStr.

   <P><B>Implementation: </B><A HREF="XString.java.html#067">View source</A>

   @return
      A new String that is equivalent to the this XString but with the leading character set characters
      removed.

   @param
      pCharset is the Object whose String representation is used as the set of characters to remove.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimLeftCharset(Type1 pCharset)
      {
      return new XString(UString.trimLeftCharset(this.iOrignlStr, pCharset));
      }



   /*:                                    :METHOD:068:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the characters that are in a character set from the beginning of the String
   representation of pStr, ignoring case.

   <P><B>Implementation: </B><A HREF="XString.java.html#068">View source</A>

   @return
      A new String that is equivalent to the this XString but with the leading character set characters
      removed.

   @param
      pCharset is the Object whose String representation is used as the set of characters to remove.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimLeftCharsetIgnoreCase(Type1 pCharset)
      {
      return new XString(UString.trimLeftCharsetIgnoreCase(this.iOrignlStr, pCharset));
      }



   /*:                                    :METHOD:069:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the characters that are in a character set from the end of the String
   representation of pStr.

   <P><B>Implementation: </B><A HREF="XString.java.html#069">View source</A>

   @return
      A new String that is equivalent to the this XString but with the trailing character set
      characters removed.

   @param
      pCharset is the Object whose String representation is used as the set of characters to remove.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimRightCharset(Type1 pCharset)
      {
      return new XString(UString.trimRightCharset(this.iOrignlStr, pCharset));
      }



   /*:                                    :METHOD:070:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the characters that are in a character set from the end of the String
   representation of pStr, ignoring case.

   <P><B>Implementation: </B><A HREF="XString.java.html#070">View source</A>

   @return
      A new String that is equivalent to the this XString but with the trailing character set
      characters removed.

   @param
      pCharset is the Object whose String representation is used as the set of characters to remove.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimRightCharsetIgnoreCase(Type1 pCharset)
      {
      return new XString(UString.trimRightCharsetIgnoreCase(this.iOrignlStr, pCharset));
      }



   /*:                                    :METHOD:071:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the whitespace from the beginning of this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#071">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading whitespace removed.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString trimLeft()
      {
      return new XString(UString.trimLeft(this.iOrignlStr));
      }



   /*:                                    :METHOD:072:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes a leading substring from this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#072">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading substring removed.

   @param
      pPrefix is the substring that will be trimmed from this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimLeft(Type1 pPrefix)
      {
      return new XString(UString.trimLeft(this.iOrignlStr,pPrefix));
      }



   /*:                                    :METHOD:073:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes a leading substring from this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#073">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading substring removed.

   @param
      pPrefix is the substring that will be trimmed from this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimLeftIgnoreCase(Type1 pPrefix)
      {
      return new XString(UString.trimLeftIgnoreCase(this.iOrignlStr,pPrefix));
      }



   /*:                                    :METHOD:074:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the whitespace from the end of this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#074">View source</A>

   @return
      A new XString that is equivalent to this XString but with the trailing whitespace removed.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString trimRight()
      {
      return new XString(UString.trimRight(this.iOrignlStr));
      }



   /*:                                    :METHOD:075:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes a trailing substring from this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#075">View source</A>

   @return
      A new XString that is equivalent to this XString but with the trailing substring removed.

   @param
      pSuffix is the substring that will be trimmed from this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimRight(Type1 pSuffix)
      {
      return new XString(UString.trimRight(this.iOrignlStr,pSuffix));
      }



   /*:                                    :METHOD:076:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes a trailing substring from this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#076">View source</A>

   @return
      A new XString that is equivalent to this XString but with the trailing substring removed.

   @param
      pSuffix is the substring that will be trimmed from this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString trimRightIgnoreCase(Type1 pSuffix)
      {
      return new XString(UString.trimRightIgnoreCase(this.iOrignlStr,pSuffix));
      }



   /*:                                    :METHOD:077:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method iteratively appends pPadChar to a this XString until the resulting XString is pFieldSize
   characters long.

   <P><B>Implementation: </B><A HREF="XString.java.html#077">View source</A>

   @return
      A new XString that is equivalent to this XString but with the trailing characters added.

   @param
      pFieldSize is the size of the resulting XString including its appended characters.
   @param
      pPadChar is the char to append to the XString
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString alignLeft(int pFieldSize, char pPadChar)
      {
      return new XString(UString.alignLeft(this.iOrignlStr,pFieldSize,pPadChar));
      }



   /*:                                    :METHOD:078:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method iteratively prepends pPadChar to a this XString until the resulting XString is
   pFieldSize characters long.

   <P><B>Implementation: </B><A HREF="XString.java.html#078">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading characters added.

   @param
      pFieldSize is the size of the resulting XString including its prepended characters.
   @param
      pPadChar is the char to prepend to the XString
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString alignRight(int pFieldSize, char pPadChar)
      {
      return new XString(UString.alignRight(this.iOrignlStr,pFieldSize,pPadChar));
      }



   /*:                                    :METHOD:079:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method iteratively prepends and appends pPadChar in equal quantities to this XString until the
   resulting XString is pFieldSize characters long. It centers this XString in a field that is
   pFieldSize characters long with pPadChars filling out the left and right of the field.

   <P><B>Implementation: </B><A HREF="XString.java.html#079">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading and trailing characters
      added.

   @param
      pFieldSize is the size of the resulting XString including its prepended and appended characters.
   @param
      pPadChar is the char to prepend and append to the XString
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString alignCenter(int pFieldSize, char pPadChar)
      {
      return new XString(UString.alignCenter(this.iOrignlStr,pFieldSize,pPadChar));
      }



   /*:                                    :METHOD:080:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method replaces all the tabs in this XString with the appropriate number of spaces.

   <P><B>Implementation: </B><A HREF="XString.java.html#080">View source</A>

   @return
      A new XString that is equivalent to the specified XString with the tab characters replaced by
      space characters.

   @param
      pTabSize is the number of spaces between tab stops.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString detab(int pTabSize)
      {
      return new XString(UString.detab(this.iOrignlStr,pTabSize));
      }



   /*:                                    :METHOD:081:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method replaces spaces with tabs in this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#081">View source</A>

   @return
      A new XString that is equivalent to this XString with the tab characters inserted.

   @param
      pTabSize is the number of spaces between tab stops.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString entab(int pTabSize)
      {
      return new XString(UString.entab(this.iOrignlStr,pTabSize));
      }



   /*:                                    :METHOD:082:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API XString Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#082">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString replace(Type1 target, Type2 replacement)
      {
      return this.replace(UString.toString(target),UString.toString(replacement));
      }



   /*:                                    :METHOD:083:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns a new XString resulting from replacing all occurrences of pOldString in this
   xString with pNewString.<P>

   This method repeatedly checks the resulting XString for occurrences of pOldString and replaces them
   if they exist. The checking continues untill there are no occurrences of pOldString in the result.
   The reason for this is to handle situations like this: say that pStr = "AAA", pOldString = "AA", and
   pNewString = "A". Running replace() one time would result in this string: "AA". Running
   iteratingReplace() one time would result in this string: "A".

   <P><B>Implementation: </B><A HREF="XString.java.html#083">View source</A>

   @return
      A new XString that is equivalent to this XString with the all occurrences of pOldString in this
      xString replaced with pNewString.

   @param
      pOldString is the substring to replace.
   @param
      pNewString is the string with which to replace the instances of pOldString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString iteratingReplace(Type1 pOldString, Type2 pNewString)
      {
      return new XString(UString.iteratingReplace(this.iOrignlStr,pOldString,pNewString));
      }



   /*:                                    :METHOD:084:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns a new XString resulting from replacing all occurrences of pOldString in this
   xString with pNewString.<P>

   This method repeatedly checks the resulting XString for occurrences of pOldString and replaces them
   if they exist. The checking continues untill there are no occurrences of pOldString in the result.
   The reason for this is to handle situations like this: say that pStr = "AAA", pOldString = "AA", and
   pNewString = "A". Running replace() one time would result in this string: "AA". Running
   iteratingReplace() one time would result in this string: "A".

   <P><B>Implementation: </B><A HREF="XString.java.html#084">View source</A>

   @return
      A new XString that is equivalent to this XString with the all occurrences of pOldString in this
      xString replaced with pNewString.

   @param
      pOldString is the substring to replace.
   @param
      pNewString is the string with which to replace the instances of pOldString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString iteratingReplaceIgnoreCase(Type1 pOldString, Type2 pNewString)
      {
      return new XString(UString.iteratingReplaceIgnoreCase(this.iOrignlStr,pOldString,pNewString));
      }



   /*:                                    :METHOD:085:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method takes an XString and generates a hash of it in which each character is replaced with a
   character in the range ' ' to '~'.

   <P><B>Implementation: </B><A HREF="XString.java.html#085">View source</A>

   @return
      An XString with the same length as this XString and in which every character is in the range of
      the 95 characters from ' ' to '~'.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString asciiHash()
      {
      return new XString(UString.asciiHash(this.iOrignlStr));
      }



   /*:                                    :METHOD:086:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method takes an XString and generates a hash of it in which each character is replaced with a
   character in the range ' ' to '~'.

   <P><B>Implementation: </B><A HREF="XString.java.html#086">View source</A>

   @return
      An XString with the same length as this XString and in which every character is in the range of
      the 95 characters from ' ' to '~'.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString asciiHashIgnoreCase()
      {
      return new XString(UString.asciiHashIgnoreCase(this.iOrignlStr));
      }



   /*:                                    :METHOD:087:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the leading white space in this XString as a new XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#087">View source</A>

   @return
      An XString containing the leading white space in this XString. If this XString is null or empty,
      this method returns an empty XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString whitespacePrefix()
      {
      return new XString(UString.whitespacePrefix(this.iOrignlStr));
      }



   /*:                                    :METHOD:088:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the length of the leading white space in this XString as an int.

   <P><B>Implementation: </B><A HREF="XString.java.html#088">View source</A>

   @return
      A int containing the length of the leading white space in this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int whitespacePrefixLength(Type1 pStr)
      {
      return UString.whitespacePrefixLength(this.iOrignlStr);
      }



   /*:                                    :METHOD:089:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method backs up from a given starting point in this XString until it runs into either the start
   of this XString or a "\n". It then returns the whitespace prefix starting from that point.

   <P><B>Implementation: </B><A HREF="XString.java.html#089">View source</A>

   @return
      This method returns the whitespace prefix of the line of text that contains the pIdx'th character
      in this XString.

   @param
      pIdx is the index into this XString from which to back up looking for a whitespace prefix.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString whitespacePrefixOfLineContainingIndex(int pIdx)
      {
      return new XString(UString.whitespacePrefixOfLineContainingIndex(this.iOrignlStr, pIdx));
      }



   /*:                                    :METHOD:090:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the leading white space and line comment delimiters ("//") in this XString as a
   new XString.
      <BLOCKQUOTE>
         For example, if this XString comprised this sequence of characters:
            <BLOCKQUOTE>
               <PRE id="unindent">
                  "  //  // /<--That is not a comment delimiter because it has only 1 slash"
               </PRE>
            </BLOCKQUOTE>
        Then this method would return an XString comprising this sequence of characters:
           <BLOCKQUOTE>
              <PRE id="unindent">
                 "  //  // "
              </PRE>
           </BLOCKQUOTE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#090">View source</A>

   @return
      A XString containing the leading white space and line comment delimiters ("//") in the input
      xString. If this XString is null or empty, this method returns an empty XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString whitespaceAndLineCommentPrefix()
      {
      return new XString(UString.whitespaceAndLineCommentPrefix(this.iOrignlStr));
      }



   /*:                                    :METHOD:091:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method backs up from a given index in this XString until it runs into either the start of this
   xString or a "\n". It then returns the entire line prefix starting from that point. The prefix will
   include the whitespace as well as comment delimiters in cases where the line was commented out.

   <P><B>Implementation: </B><A HREF="XString.java.html#091">View source</A>

   @return
      This method returns the line prefix of the line of text that contains the pIdx'th character in
      this XString.

   @param
      pIdx is the index into this XString from which to back up looking for a line prefix.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString linePrefixOfLineContainingIndex(int pIdx)
      {
      return new XString(UString.linePrefixOfLineContainingIndex(this.iOrignlStr, pIdx));
      }



   /*:                                    :METHOD:092:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method is for counting the number of newlines immediately preceeding an index in a XString. If
   the index is immediately preceeded by text, then this method returns a count of zero newlines. If it
   is immediately preceeded by a single line comment delimiter (double forward slash) or if it is
   immediately preceeded by whitespace or any sequential combination of single line comment delimiters
   and whitespace, this method will skip over the comment delimiters and/or whitespaces looking for
   newlines. If/when it finds a newline, it counts that newline and all other newlines that
   consecutively and exclusively preceed it and returns the count.

   <P><B>Implementation: </B><A HREF="XString.java.html#092">View source</A>

   @return
      This method returns the number of newlines between pIdx and the nearest text prior to it that is
      not whitespace nor a single-line comment

   @param
      pIdx is the index into this XString from which to back up looking for newlines.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int newlinesBeforeIndex(int pIdx)
      {
      return UString.newlinesBeforeIndex(this.iOrignlStr, pIdx);
      }



   /*:                                    :METHOD:093:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method is for counting the number of newlines immediately following an index in a XString. If
   the index is immediately followed by text, then this method returns a count of zero newlines. If it
   is immediately followed by a single line comment delimiter (double forward slash) or if it is
   immediately followed by whitespace or any sequential combination of single line comment delimiters
   and whitespace, this method will skip over the comment delimiters and/or whitespaces looking for
   newlines. If/when it finds a newline, it counts that newline and all other newlines that
   consecutively and exclusively follow it and returns the count.

   <P><B>Implementation: </B><A HREF="XString.java.html#093">View source</A>

   @return
      This method returns the number of newlines between pIdx and the nearest text after to it that is
      not whitespace nor a single-line comment

   @param
      pIdx is the index into this XString from which to begin looking for newlines.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int newlinesAfterIndex(int pIdx)
      {
      return UString.newlinesAfterIndex(this.iOrignlStr, pIdx);
      }



   /*:                                    :METHOD:094:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the line of text containing this XString.charAt(pIdx). The line begins at either
   this XString.charAt(0) or at the character AFTER the first newline prior to this
   xString.charAt(pIdx), whichever has the greater index (whichever comes last). The line ends at
   either this XString.charAt(this XString.length()-1) or AT the first newline after to this
   xString.charAt(pIdx), whichever has the smaller index (whichever comes first). Examples:
      <BLOCKQUOTE>
         <PRE id="unindent">
            lineContainingIndex(           "This is the line\nfollowng text",  4) returns "This is the line\n"
                                 012345678 901234 5678901234567890
            lineContainingIndex("preceedng\nThis is the line\nfollowng text", 14) returns "This is the line\n"
                                 012345678 901234 5678901234567890
            lineContainingIndex(           "This is the line"               ,  4) returns "This is the line"
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#094">View source</A>

   @return
      An XString containing the line which includes the this XString's character pointed to by pIdx. If
      this XString == null || this XString.equals("") || (pIdx < 0) || (pIdx >= this XString.length())
      then this method returns the empty XString.

   @param
      pIdx is the index into this XString for which the containing line is returned.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString lineContainingIndex(int pIdx)
      {
      return new XString(UString.lineContainingIndex(this.iOrignlStr, pIdx));
      }



   /*:                                    :METHOD:095:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the index into this XString of the first character in the line that contains the
   pIdx'th character.<P>

   A line is considered to be a sequence of characters and their terminating newline. It does not
   include the newline preceding the sequence. Here are some example XStrings -- in the left column --
   in which the dollar sign ($) represents a newline character. Under each XString is a series of
   circumflex accents (^) that indicate the span of the line under the specific condition given in the
   right column:
      <BLOCKQUOTE>
         <PRE id="unindent">
            +---------------------------------------------------+------------------------------------------------+
            |  STRING WITH SPAN OF LINE INDICATED               |  UNDER THIS CONDITION                          |
            +---------------------------------------------------+------------------------------------------------+
            |  "this line has no newlines."                     |                                                |
            |   ^^^^^^^^^^^^^^^^^^^^^^^^^^                      |  pIdx points to any character in this XString  |
            |                                                   |                                                |
            |  "$preceding newline but no terminating newline." |                                                |
            |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  |  0 < pIdx < XString.length()                   |
            |   ^                                               |  pIdx = 0                                      |
            |                                                   |                                                |
            |  "$preceding newline and a terminating newline.$" |                                                |
            |                                                ^  |  pIdx = XString.length() - 1                   |
            |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  |  0 < pIdx < XString.length()                   |
            |   ^                                               |  pIdx = 0                                      |
            |                                                   |                                                |
            |  "$"                                              |                                                |
            |   ^                                               |  pIdx = 0                                      |
            |                                                   |                                                |
            |  "$$"                                             |                                                |
            |   ^                                               |  pIdx = 0                                      |
            |    ^                                              |  0 < pIdx < XString.length()                   |
            +---------------------------------------------------+------------------------------------------------+
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#095">View source</A>

   @return
      This method returns the index into this XString of the first character in the line that contains
      the pIdx'th character. It returns -1 if this XString is null or empty. It returns -1 if pidx is
      out of range of valid indexes for this XString.

   @param
      pIdx is the index of a character within this XString. The line within this XString that contains
      the character at index pIdx is the line whose starting index is returned.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int indexOfStartOfLineContainingIndex(int pIdx)
      {
      return UString.indexOfStartOfLineContainingIndex(this.iOrignlStr, pIdx);
      }



   /*:                                    :METHOD:096:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the index into this XString of the last character in the line that contains the
   pIdx'th character.<P>

   A line is considered to be a sequence of characters and their terminating newline. It does not
   include the newline preceding the sequence. Here are some example XStrings -- in the left column --
   in which the dollar sign ($) represents a newline character. Under each XString is a series of
   circumflex accents (^) that indicate the span of the line under the specific condition given in the
   right column:
      <BLOCKQUOTE>
         <PRE id="unindent">
            +---------------------------------------------------+------------------------------------------------+
            |  STRING WITH SPAN OF LINE INDICATED               |  UNDER THIS CONDITION                          |
            +---------------------------------------------------+------------------------------------------------+
            |  "this line has no newlines."                     |                                                |
            |   ^^^^^^^^^^^^^^^^^^^^^^^^^^                      |  pIdx points to any character in this XString  |
            |                                                   |                                                |
            |  "$preceding newline but no terminating newline." |                                                |
            |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  |  0 < pIdx < XString.length()                   |
            |   ^                                               |  pIdx = 0                                      |
            |                                                   |                                                |
            |  "$preceding newline and a terminating newline.$" |                                                |
            |                                                ^  |  pIdx = XString.length() - 1                   |
            |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  |  0 < pIdx < XString.length()                   |
            |   ^                                               |  pIdx = 0                                      |
            |                                                   |                                                |
            |  "$"                                              |                                                |
            |   ^                                               |  pIdx = 0                                      |
            |                                                   |                                                |
            |  "$$"                                             |                                                |
            |   ^                                               |  pIdx = 0                                      |
            |    ^                                              |  0 < pIdx < XString.length()                   |
            +---------------------------------------------------+------------------------------------------------+
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#096">View source</A>

   @return
      This method returns the index into this XString of the last character in the line that contains
      the pIdx'th character. It returns -1 if this XString is null or empty. It returns -1 if this
      xString is out of range of valid indexes for this XString.

   @param
      pIdx is the index of the character within this XString. The line within this XString that
      contains the character at index pIdx is the line whose ending index is returned.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int indexOfEndOfLineContainingIndex(int pIdx)
      {
      return UString.indexOfEndOfLineContainingIndex(this.iOrignlStr, pIdx);
      }



   /*:                                    :METHOD:097:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method word wraps this XString using the default line length.

   <P><B>Implementation: </B><A HREF="XString.java.html#097">View source</A>

   @return
      An ArrayList into which this method puts the lines it generates from this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public ArrayList<XString> wordWrap()
      {
      ArrayList<String>   aStr   = UString.wordWrap(this.iOrignlStr);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:098:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method word wraps this XString using the default line length.

   <P><B>Implementation: </B><A HREF="XString.java.html#098">View source</A>

   @return
      An ArrayList into which this method puts the lines it generates from this XString.

   @param
      pCapitalize turns the optional capitalization on (true) or off (false)
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public ArrayList<XString> wordWrap(UCapitalizer pCapitalizer)
      {
      ArrayList<String>   aStr   = UString.wordWrap(this.iOrignlStr,pCapitalizer);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:099:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method word wraps this XString using the specified line length.

   <P><B>Implementation: </B><A HREF="XString.java.html#099">View source</A>

   @return
      An ArrayList into which this method puts the lines it generates from this XString.

   @param
      pLineLength is the line length at which the XString is word wrapped.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public ArrayList<XString> wordWrap(int pLineLength)
      {
      ArrayList<String>   aStr   = UString.wordWrap(this.iOrignlStr,pLineLength);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:100:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method word wraps this XString using the specified line length.

   <P><B>Implementation: </B><A HREF="XString.java.html#100">View source</A>

   @return
      An ArrayList into which this method puts the lines it generates from this XString.

   @param
      pLineLength is the line length at which the XString is word wrapped.
   @param
      pCapitalize turns the optional capitalization on (true) or off (false)
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public ArrayList<XString> wordWrap(int pLineLength, UCapitalizer pCapitalizer)
      {
      ArrayList<String>   aStr   = UString.wordWrap(this.iOrignlStr,pLineLength,pCapitalizer);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:101:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method breaks a mixed case XString representation of this XString up into tokens. The start of
   each word in the mixed case XString is signaled by a capitalized letter. Each word wil be returned
   as a separate token.

   <P><B>Implementation: </B><A HREF="XString.java.html#101">View source</A>

   @return
      An arrayList containing the tokens.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public ArrayList<XString> tokenizedMixedCaseString()
      {
      ArrayList<String>   aStr   = UString.tokenizedMixedCaseString(this.iOrignlStr);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:102:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method breaks a this XString up into tokens. The tokens in this XString are delimited by the
   specified delimiters (all the characters in the delimiters argument are treated as delimiters for
   separating tokens).

   <P><B>Implementation: </B><A HREF="XString.java.html#102">View source</A>

   @return
      An arrayList containing the tokens.

   @param
      pDelimiters is the set of delimiters (the characters that separate tokens). Delimiter characters
      themselves will not be treated as tokens.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> ArrayList<XString> tokenizedString(Type1 pDelimiters)
      {
      ArrayList<String>   aStr   = UString.tokenizedString(this.iOrignlStr,pDelimiters);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:103:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method breaks a this XString up into tokens. The tokens in this XString are delimited by the
   specified delimiters (all the characters in the delimiters argument are treated as delimiters for
   separating tokens).

   <P><B>Implementation: </B><A HREF="XString.java.html#103">View source</A>

   @return
      An arrayList containing the tokens.

   @param
      pDelimiters is the set of delimiters (the characters that separate tokens). Delimiter characters
      themselves will not be treated as tokens.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> ArrayList<XString> tokenizedStringIgnoreCase(Type1 pDelimiters)
      {
      ArrayList<String>   aStr   = UString.tokenizedStringIgnoreCase(this.iOrignlStr,pDelimiters);
      ArrayList<XString>  result = new ArrayList<XString>();
      for (String str : aStr)
         {
         result.add(new XString(str));
         }
      return result;
      }



   /*:                                    :METHOD:104:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes the leading zeros from an XString. It accepts decimal numbers, numbers given by
   the following grammar:
      <BLOCKQUOTE>
         <PRE id="unindent">
            *  DecodableString := [Sign][leading zeros]IntegerDigits[.]IntegerDigits
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#104">View source</A>

   @return
      A new XString that is equivalent to this XString but with the leading zeros removed.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString removeLeadingZeros()
      {
      return new XString(UString.removeLeadingZeros(this.iOrignlStr));
      }



   /*:                                    :METHOD:105:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString and counts all the instances of a substring (pOther) that it
   contains.

   <P><B>Implementation: </B><A HREF="XString.java.html#105">View source</A>

   @return
      A count of the number of times the substring pOther is found in this XString

   @param
      pOther is the substring to count the instances of.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int containsCount(Type1 pOther)
      {
      return UString.containsCount(this.iOrignlStr,pOther);
      }



   /*:                                    :METHOD:106:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString and counts all the instances of a substring (pOther) that it
   contains. The search is case-insensitive.

   <P><B>Implementation: </B><A HREF="XString.java.html#106">View source</A>

   @return
      A count of the number of times the substring pOther is found in this XString

   @param
      pOther is the substring to count the instances of.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int containsCountIgnoreCase(Type1 pOther)
      {
      return UString.containsCountIgnoreCase(this.iOrignlStr,pOther);
      }



   /*:                                    :METHOD:107:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains the character in pChar

   <P><B>Implementation: </B><A HREF="XString.java.html#107">View source</A>

   @return
      True if this XString contains pChar

   @param
      pChar is the character to search for.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean containsChar(char pChar)
      {
      return UString.containsChar(this.iOrignlStr,pChar);
      }



   /*:                                    :METHOD:108:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains the character in pChar

   <P><B>Implementation: </B><A HREF="XString.java.html#108">View source</A>

   @return
      True if any of the pStr contains pChar

   @param
      pChar is the character to search for.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean containsCharIgnoreCase(char pChar)
      {
      return UString.containsCharIgnoreCase(this.iOrignlStr,pChar);
      }



   /*:                                    :METHOD:109:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains any of the characters in the String
   representation of pChars.

   <P><B>Implementation: </B><A HREF="XString.java.html#109">View source</A>

   @return
      True if any of the chars in pChars are in this XString

   @param
      pChars is the string containing all the characters to search for in pStr.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean containsAnyCharsInString(Type1 pChars)
      {
      return UString.containsAnyCharsInString(this.iOrignlStr,pChars);
      }



   /*:                                    :METHOD:110:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains any of the characters in the String
   representation of pChars.

   <P><B>Implementation: </B><A HREF="XString.java.html#110">View source</A>

   @return
      True if any of the chars in pChars are in this XString

   @param
      pChars is the string containing all the characters to search for in pStr.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean containsAnyCharsInStringIgnoreCase(Type1 pChars)
      {
      return UString.containsAnyCharsInStringIgnoreCase(this.iOrignlStr,pChars);
      }



   /*:                                    :METHOD:111:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains only characters in the String representation
   of pChars.

   <P><B>Implementation: </B><A HREF="XString.java.html#111">View source</A>

   @return
      True if all of the chars in this XString are also in the string pChars. If this XString is empty
      or if any of the chars in this XString are NOT also in the string pChars, this method returns
      false.

   @param
      pChars is the string containing all the characters to search for in this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean containsOnlyCharsInString(Type1 pChars)
      {
      return UString.containsOnlyCharsInString(this.iOrignlStr,pChars);
      }



   /*:                                    :METHOD:112:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains only characters in the String representation
   of pChars.

   <P><B>Implementation: </B><A HREF="XString.java.html#112">View source</A>

   @return
      True if all of the chars in this XString are also in the string pChars. If this XString is empty
      or if any of the chars in this XString are NOT also in the string pChars, this method returns
      false.

   @param
      pChars is the string containing all the characters to search for in this XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean containsOnlyCharsInStringIgnoreCase(Type1 pChars)
      {
      return UString.containsOnlyCharsInStringIgnoreCase(this.iOrignlStr,pChars);
      }



   /*:                                    :METHOD:113:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains only characters representing digits - '0'
   '1' '2' '3' '4' '5' '6' '7' '8' '9'

   <P><B>Implementation: </B><A HREF="XString.java.html#113">View source</A>

   @return
      True if all of the chars in this XString are digits. If this XString is empty or if any of the
      chars in this XString are NOT digits, this method returns false.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isAllDigits()
      {
      return UString.isAllDigits(this.iOrignlStr);
      }



   /*:                                    :METHOD:114:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method searches this XString to see if it contains only characters representing letters -
   'A'..'Z' 'a'..'z'

   <P><B>Implementation: </B><A HREF="XString.java.html#114">View source</A>

   @return
      True if all of the chars in this XString are letters. If this XString is empty or if any of the
      chars in this XString are NOT letters, this method returns false.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean isAllLetters()
      {
      return UString.isAllLetters(this.iOrignlStr);
      }



   /*:                                    :METHOD:115:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method truncates this XString to a specified length

   <P><B>Implementation: </B><A HREF="XString.java.html#115">View source</A>

   @return
      A new XString that is a truncated version of the input string

   @param
      pSize is the size that this XString is truncated to.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString truncString(int pSize)
      {
      return new XString(UString.truncString(this.iOrignlStr,pSize));
      }



   /*:                                    :METHOD:116:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method parses this XString into words and delimiters.<P>

   For example, assume that 'myString' is this XString and contains words separated by delimiters.
   Further, assume that the following characters are considered to be the delimiters that separate the
   words from each other in the string: parentheses, spaces, commas, and periods. Then this method
   could be called like this:
      <BLOCKQUOTE>
         <PRE id="unindent">
            ArrayList  wordsAndDelims = Util.getWordsAndDelimiters(myStr, "() ,.")
         </PRE>
      </BLOCKQUOTE>

   Then when getWordsAndDelimiters() returns, the ArrayList wordsAndDelims would contain two objects,
   one being an ArrayList of the words in myString and the other being an ArrayList of the delimiters
   between the words.<P>

   If 'myString' is this string:
      <BLOCKQUOTE>
         <PRE id="unindent">
            "listen, this is a test... Believe it."
         </PRE>
      </BLOCKQUOTE>

   Then calling this method as described above would return the following:
      <BLOCKQUOTE>
         => wordsAndDelims is an ArrayList containing 2 ArrayList objects.
            <BLOCKQUOTE>
               -> The first ArrayList contains 7 XString objects; each XString is one word from
                  MyString.<BR>
               -> The second ArrayList contains 7 XString objects; each XString is one series of
                  Consecutive Delimiters from myString.
            </BLOCKQUOTE>
      </BLOCKQUOTE>

      <BLOCKQUOTE>
         <PRE id="unindent">
            ArrayList words = (ArrayList)wordsAndDelims.get(0);
            ArrayList delims = (ArrayList)wordsAndDelims.get(1);
         </PRE>
      </BLOCKQUOTE>

   Words would contain these Strings:
      <BLOCKQUOTE>
         <PRE id="unindent">
            "listen" "this" "is" "a" "test" "believe" "it"
         </PRE>
      </BLOCKQUOTE>

   Delims would contain these Strings:
      <BLOCKQUOTE>
         <PRE id="unindent">
            ", " " " " " " " "... " " " "."
         </PRE>
      </BLOCKQUOTE>

   If the first characters in 'myString' are delimiters instead of a word, such as in this XString:
      <BLOCKQUOTE>
         <PRE id="unindent">
            "(((listen, this is a test... Believe it.)))"
         </PRE>
      </BLOCKQUOTE>

   Then the first word in the words ArrayList would be the empty XString because the empty XString is
   the first token in myString:
      <BLOCKQUOTE>
         Words would contain these Strings:
            <BLOCKQUOTE>
               <PRE id="unindent">
                  "" "listen" "this" "is" "a" "test" "believe" "it"
               </PRE>
            </BLOCKQUOTE>

         Delims would contain these Strings:
            <BLOCKQUOTE>
               <PRE id="unindent">
                  "(((" ", " " " " " " " "... " " " ".)))"
               </PRE>
            </BLOCKQUOTE>
      </BLOCKQUOTE>

   In other words, the first XString in words is the first token in myString, the first XString in
   delims is the second token in myString, the second XString in words is the third token in myString,
   the second XString in delims is the fourth token in myString, etc.<P>

   This approach makes it possible to know the relative order of the word tokens and delimiter tokens.
   To reassemble the original XString, the following algorithm will always work because reassembly
   always begins with the first word token and then alternates between successive delimiter and word
   tokens.
      <BLOCKQUOTE>
         <PRE id="unindent">
            MyString = "";
            for (int i=0; i&#60words.size(); i++)
               {
               myString += (String)words.get(i) + (String)delims.get(i);
               }
         </PRE>
      </BLOCKQUOTE>

   Here is a complete segment of code that illustrates how to use getWordsAndDelimeters():
      <BLOCKQUOTE>
         <PRE id="unindent">
            String myStr = "listen, this is a test... Believe it.)))";
            ArrayList wordsAndDelims = Util.getWordsAndDelimiters(myStr, "() ,.");
            ArrayList words = (ArrayList)wordsAndDelims.get(0);
            ArrayList delims = (ArrayList)wordsAndDelims.get(1);
            myStr = "";
            for (int i=0; i < words.size(); i++)
               {
               myStr += (String)words.get(i) + (String)delims.get(i);
               System.out.println((String)words.get(i) + " " + (String)delims.get(i));
               }
            System.out.println(myStr);
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#116">View source</A>

   @return
      An ArrayList containing two ArrayList objects. The 1st ArrayList object contains the words. The
      2nd ArrayList object contains the delimiters.

   @param
      pDelimChars is a string containing all the characters that are to be considered delimiters when
      searching the string.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> ListOfLists<XString> getWordsAndDelimiters(Type1 pDelimChars)
      {
      ListOfLists<String>  stringWordsAndDelimiters = UString.getWordsAndDelimiters(this.iOrignlStr, pDelimChars);
      return stringWordsAndDelimiters.convert(new StringToXStringConverter<String>());
      }



   /*:                                    :METHOD:117:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method parses this XString into words and delimiters.

   <P><B>Implementation: </B><A HREF="XString.java.html#117">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> ListOfLists<XString> getWordsAndDelimitersIgnoreCase(Type1 pDelimChars)
      {
      ListOfLists<String>  stringWordsAndDelimiters = UString.getWordsAndDelimitersIgnoreCase(this.iOrignlStr, pDelimChars);
      return stringWordsAndDelimiters.convert(new StringToXStringConverter<String>());
      }



   /*:                                    :METHOD:118:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API XString Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#118">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean contentEqualsIgnoreCase(StringBuffer sb)
      {
      return UString.contentEqualsIgnoreCase(this.iOrignlStr,sb);
      }



   /*:                                    :METHOD:119:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#119">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean contentEqualsIgnoreCase(CharSequence cs)
      {
      return UString.contentEqualsIgnoreCase(this.iOrignlStr,cs);
      }
   public <Type1> boolean contentEqualsIgnoreCase(Type1 cs)
      {
      return UString.contentEqualsIgnoreCase(this.iOrignlStr,cs);
      }



   /*:                                    :METHOD:120:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#120">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean regionMatchesIgnoreCase(int toffset, Type1 other, int ooffset, int len)
      {
      return UString.regionMatchesIgnoreCase(this.iOrignlStr,toffset,other,ooffset,len);
      }



   /*:                                    :METHOD:121:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#121">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean startsWithIgnoreCase(Type1 prefix, int toffset)
      {
      return UString.startsWithIgnoreCase(this.iOrignlStr,prefix,toffset);
      }



   /*:                                    :METHOD:122:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#122">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean startsWithIgnoreCase(Type1 prefix)
      {
      return UString.startsWithIgnoreCase(this.iOrignlStr,prefix);
      }



   /*:                                    :METHOD:123:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#123">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean endsWithIgnoreCase(Type1 suffix)
      {
      return UString.endsWithIgnoreCase(this.iOrignlStr,suffix);
      }



   /*:                                    :METHOD:124:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#124">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int hashCodeIgnoreCase()
      {
      return UString.hashCodeIgnoreCase(this.iOrignlStr);
      }



   /*:                                    :METHOD:125:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#125">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int indexOfIgnoreCase(int ch)
      {
      return UString.indexOfIgnoreCase(this.iOrignlStr,ch);
      }



   /*:                                    :METHOD:126:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#126">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int indexOfIgnoreCase(int ch, int fromIndex)
      {
      return UString.indexOfIgnoreCase(this.iOrignlStr,ch,fromIndex);
      }



   /*:                                    :METHOD:127:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#127">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int lastIndexOfIgnoreCase(int ch)
      {
      return UString.lastIndexOfIgnoreCase(this.iOrignlStr,ch);
      }



   /*:                                    :METHOD:128:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#128">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int lastIndexOfIgnoreCase(int ch, int fromIndex)
      {
      return UString.lastIndexOfIgnoreCase(this.iOrignlStr,ch,fromIndex);
      }



   /*:                                    :METHOD:129:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#129">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int indexOfIgnoreCase(Type1 other)
      {
      return UString.indexOfIgnoreCase(this.iOrignlStr,other);
      }



   /*:                                    :METHOD:130:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#130">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int indexOfIgnoreCase(Type1 other, int fromIndex)
      {
      return UString.indexOfIgnoreCase(this.iOrignlStr,other,fromIndex);
      }



   /*:                                    :METHOD:131:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#131">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int lastIndexOfIgnoreCase(Type1 other)
      {
      return UString.lastIndexOfIgnoreCase(this.iOrignlStr,other);
      }



   /*:                                    :METHOD:132:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#132">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int lastIndexOfIgnoreCase(Type1 other, int fromIndex)
      {
      return UString.lastIndexOfIgnoreCase(this.iOrignlStr,other,fromIndex);
      }



   /*:                                    :METHOD:133:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#133">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString replaceIgnoreCase(char oldChar, char newChar)
      {
      return new XString(UString.replaceIgnoreCase(this.iOrignlStr,oldChar,newChar));
      }



   /*:                                    :METHOD:134:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#134">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> boolean matchesIgnoreCase(Type1 regex)
      {
      return UString.matchesIgnoreCase(this.iOrignlStr,regex);
      }



   /*:                                    :METHOD:135:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#135">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public boolean containsIgnoreCase(CharSequence s)
      {
      return UString.containsIgnoreCase(this.iOrignlStr,s);
      }
   public <Type1> boolean containsIgnoreCase(Type1 s)
      {
      return UString.containsIgnoreCase(this.iOrignlStr,s);
      }



   /*:                                    :METHOD:136:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#136">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString replaceFirstIgnoreCase(Type1 regex, Type2 replacement)
      {
      return new XString(UString.replaceFirstIgnoreCase(this.iOrignlStr,regex,replacement));
      }



   /*:                                    :METHOD:137:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method replaces instances of substrings matching the regular expression in regex with a string
   generated from the regular expression in replacement.<P>

   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#137">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString replaceAllIgnoreCase(Type1 regex, Type2 replacement)
      {
      return new XString(UString.replaceAllIgnoreCase(this.iOrignlStr,regex,replacement));
      }



   /*:                                    :METHOD:138:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method replaces instances of substrings matching the regular expression in regex with a string
   generated from the regular expression in replacement.<P>

   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#138">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString replaceIgnoreCase(CharSequence target, CharSequence replacement)
      {
      return new XString(UString.replaceIgnoreCase(this.iOrignlStr,target,replacement));
      }



   /*:                                    :METHOD:139:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#139">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> XString replaceIgnoreCase
      (
      Type1  target,
      Type2  replacement
      )
      {
      return new XString(UString.replaceIgnoreCase(this.iOrignlStr,target,replacement));
      }



   /*:                                    :METHOD:140:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes all whitespace chars from an XString

   <P><B>Implementation: </B><A HREF="XString.java.html#140">View source</A>

   @return
      A new XString that is a version of this XString with all the whitespace removed.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString removeWhitespace()
      {
      return new XString(UString.removeWhitespace(this.iOrignlStr));
      }



   /*:                                    :METHOD:141:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method reverses the characters in an XString

   <P><B>Implementation: </B><A HREF="XString.java.html#141">View source</A>

   @return
      A new XString that is a reversed version of this XString
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString reverse()
      {
      return new XString(UString.reverse(this.iOrignlStr));
      }



   /*:                                    :METHOD:142:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#142">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString[] splitIgnoreCase(Type1 regex, int limit)
      {
      return XString.toXStringArray(UString.splitIgnoreCase(this.iOrignlStr,regex,limit));
      }



   /*:                                    :METHOD:143:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name (minus
   "IgnoreCase') in the JDK SE API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#143">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> XString[] splitIgnoreCase(Type1 regex)
      {
      return XString.toXStringArray(UString.splitIgnoreCase(this.iOrignlStr,regex));
      }



   /*:                                    :METHOD:144:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method finds the end of a delimited span of characters within this XString. A comment is an
   example of a delimited span but a delimited span may be any sequence of characters that has a
   defined begin delimiter and a defined end delimiter.<P>

   ASSUMPTIONS:
      This method assumes that the start delimiter has already been located and the pStart parameter is
      the next index after the end of the start delimiter. IOW, it assumes that pStart is inside the
      span of characters<P>

   For Example, if you want to delete a multiline comment in a language that delimits multiline
   comments with a ## ## pair and this is the XString
      <BLOCKQUOTE>
         <PRE id="unindent">
            XString:  " int j = 0;\\n## skip past the\\n##blooming##whitespace ##\\nfor (i=str.length(); i>0; i--)"
            Index:     01234567890 123456789012345678 901234567890123456789012345 678901234567890123456
                                       ^__pStart is passed this                   ^__this method returns this
                                          index                                      index
         </PRE>
      </BLOCKQUOTE>

   Then this is the code for using this method:
      <BLOCKQUOTE>
         <PRE id="unindent">
            //.
            =========================================================================================
            these are the regular expressions for the delimiters we will be searching for
            ----------------------------------------------------------------------------------------- //
            XString  startDelimiterPattern = new XString(Pattern.quote("##"));
            XString  endDelimiterPattern   = new XString(Pattern.quote("##"));
            //.
            =========================================================================================
            this is the XString we will be searching for them in
            ----------------------------------------------------------------------------------------- //
            XString  theXString = new XString(" int j = 0; \\n## skip past the\\n##blooming##whitespace ##\\nfor (i=str.length(); i>0; i--)");
            //.
            =========================================================================================
            Starting from the beginning of the XString (starting index 0) find the first instance of a
            start delimiter (if there is one)
            ----------------------------------------------------------------------------------------- //
            int[]  searchResults        = theXString.indexOfRegex(startDelimiterPattern, 0);
            int    startDelimiterIdx    = searchResults[0];
            int   startDelimiterLength = searchResults[2];
            //.
            =========================================================================================
            if we found one...
            ----------------------------------------------------------------------------------------- //
            if (startDelimiterIdx != (-1))
               {
               //.
               =========================================================================================
               go find its matching end delimiter and if found, get the index of the first character in
               the XString after the end of the end delimiter.
               ----------------------------------------------------------------------------------------- //
               int  idxAfterComment = theXString.indexAfterDelimitedSpanRegex(startDelimiterPattern, endDelimiterPattern, startDelimiterIdx + startDelimiterLength);
               //.
               =========================================================================================
               if we found the end delimiter...
               ----------------------------------------------------------------------------------------- //
               if (idxAfterComment != (-1))
               {
                  //.
                  =========================================================================================
                  remembering our objective of removing the start and end delimiter and everything
                  inbetween from the XString, convert the XString to a StringBuffer so we can do the delete,
                  then convert it to a String for printing.
                  ----------------------------------------------------------------------------------------- //
                  StringBuffer  workArea = new StringBuffer(theXString.toString());
                  workArea = workArea.delete(startDelimiterIdx, idxAfterComment);
                  System.out.println(workArea.toString());
                  }
               }
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#144">View source</A>

   @return
      If this method finds the end delimiter, it returns the index of the next character AFTER the end
      of the end delimiter. If it doesn't find an end delimiter, it returns -1

   @param
      pStartDelimiterPattern is the Object whose String representation contains a regular expression
      that marks the beginning of the span of characters to find the end of.
   @param
      pEndDelimiterPattern is the Object whose String representation contains a regular expression that
      marks the end of the span of characters to find the end of.
   @param
      pStart is the index of the character in this XString from which to start looking for the end of
      the span of characters.
   @param
      pRecurse tells this method whether or not to recognize nested delimited substrings. If this is
      set to true, then nested substrings are recursively processes and therefor require their own
      endDelimiter. This parameter is also usually needed for source code file comment processing. A
      "to end of line" comment type such as the double forward slash in c-type languages or the single
      quote in basic-type languages uses the newline as a comment terminator (endDelimiter). If a
      double forward slash or single quote is embedded in the XString before the terminating newline of
      the the first startDelimiter, then there is not a matching newline for both startDelimiters. So
      recursively processing the second startDelimiter would lead to bizzar results as second
      startDelimiter would "eat" the first startDelimiter's corresponding endDelimiter. This in turn
      would cause this method to continue eating characters (inappropriately) on behalf of the first
      startDelimiter until another newline was encountered. So setting pRecurse to false will
      short-circuit the processing of nested "to-end-of-line" comments if desired.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1, Type2> int indexAfterDelimitedSpanRegex(Type1 pStartDelimiterPattern, Type2 pEndDelimiterPattern, int pStart, boolean pRecurse)
      {
      return UString.indexAfterDelimitedSpanRegex(this.iOrignlStr, pStartDelimiterPattern, pEndDelimiterPattern, pStart, pRecurse);
      }


   public <Type1, Type2> int indexAfterDelimitedSpanRegex(Type1 pStartDelimiterPattern, Type2 pEndDelimiterPattern, int pStart)
      {
      return this.indexAfterDelimitedSpanRegex(pStartDelimiterPattern, pEndDelimiterPattern, pStart, true);
      }



   /*:                                    :METHOD:145:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method finds the end of a delimited span of characters within an XString. A comment is an
   example of a delimited span but a delimited span may be any sequence of characters that has a
   defined begin delimiter and a defined end delimiter.<P>

   ASSUMPTIONS:
      This method assumes that the start delimiter has already been located and the pStart parameter is
      the next index after the end of the start delimiter. IOW, it assumes that pStart is inside the
      span of characters<P>

   For Example, if you want to delete a multiline comment in a language that delimits multiline
   comments with a <* *> pair and this is the XString

      <BLOCKQUOTE>
         <PRE id="unindent">
            XString:  " int j = 0;\\n<* skip past the\\n<*blooming*>whitespace *>\\nfor (i=str.length(); i>0; i--)"
            Index:     01234567890 123456789012345678 901234567890123456789012345 678901234567890123456
                                       ^__pStart is passed this                   ^__this method returns this
                                          index                                      index
         </PRE>
      </BLOCKQUOTE>

   Then this is the code for using this method:

      <BLOCKQUOTE>
         <PRE id="unindent">
            XString theXString = new XString(" int j = 0; \\n<* skip past the\\n<*blooming*>whitespace *>\\nfor (i=str.length(); i>0; i--)");
            String startDelimiter = "<*";
            String endDelimiter = "*>";

            int startDelimiterIdx = theXString.indexOf(startDelimiter);
            int idxAfterComment = theXString.indexAfterDelimitedSpan(startDelimiter, endDelimiter, startDelimiterIdx +
            startDelimiter.length());
            XString commentlessXString = theXString.substring(0, startDelimiterIdx) + theXString.substring(idxAfterComment, theXString.length());

            System.out.println(commentlessXString);
         </PRE>
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#145">View source</A>

   @return
      If this method finds the end delimiter, it returns the index of the next character AFTER the end
      of the end delimiter. If it doesn't find an end delimiter, it returns -1

   @param
      pStartDelimiter is the Object whose String representation marks the beginning of the span of
      characters to find the end of
   @param
      pEndDelimiter is the Object whose String representation marks the end of the span of characters
      to find the end of
   @param
      pStart is the index of the character in pStr from which to start looking for the end of the span
      of characters.
   @param
      pRecurse tells this method whether or not to recognize nested delimited substrings. If this is
      set to true, then nested substrings are recursively processes and therefor require their own
      endDelimiter. This parameter is also usually needed for source code file comment processing. A
      "to end of line" comment type such as the double forward slash in c-type languages or the single
      quote in basic-type languages uses the newline as a comment terminator (endDelimiter). If a
      double forward slash or single quote is embedded in the string befor the terminating newline of
      the the first startDelimiter, then there is not a matching newline for both startDelimiters. So
      recursively processing the second startDelimiter would lead to bizzar results as second
      startDelimiter would "eat" the first startDelimiter's corresponding endDelimiter. This in turn
      would cause this method to continue eating characters (inappropriately) on behalf of the first
      startDelimiter until another newline was encountered. So pRecurse is provided to short-circuit
      the processing of nested "to-end-of-line" comments if desired.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1, Type2> int indexAfterDelimitedSpan(Type1 pStartDelimiter, Type2 pEndDelimiter, int pStart, boolean pRecurse)
      {
      return UString.indexAfterDelimitedSpan(this.iOrignlStr, pStartDelimiter, pEndDelimiter, pStart, pRecurse);
      }


   public <Type1, Type2> int indexAfterDelimitedSpan(Type1 pStartDelimiter, Type2 pEndDelimiter, int pStart)
      {
      return this.indexAfterDelimitedSpan(pStartDelimiter, pEndDelimiter, pStart, true);
      }



   /*:                                    :METHOD:146:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the indexs within this XString of the start and end of the first occurrence of a
   substring that matches a specified regular expression, found by a search starting at the specified
   index. If no match is found, -1s are returned.

   <P><B>Implementation: </B><A HREF="XString.java.html#146">View source</A>

   @return
      This method returns an array of integers containg three elements:
         <BLOCKQUOTE>
            => Element 0 (i.e. Result[0]): contains the start index, i.e. The index OF the first
               Character In the first occurrence of the regex-specified substring, found by a search
               starting at the specified index, or -1 if there is no such occurrence.<BR>
            => Element 1 (i.e. Result[1]): contains the end index, i.e. The index AFTER the last
               Character In the first occurrence of the regex-specified substring, found by a search
               starting at the specified index, or -1 if there is no such occurrence.<BR>
            => Element 2 (i.e. Result[2]): contains the length of the first occurrence of the
               Regex-specified substring, found by a search starting at the specified index, i.e.
               Result[1] - result[0], or -1 if there is no such occurrence.<BR>
         </BLOCKQUOTE>

      Note that if a matching substring is not found, all three elements of the returned array of
      integers will contain a -1.

   @param
      pPattern is an Object whose String representation is used as the regular expression. For the
      specification of valid regular expression constructs, see:
         <BLOCKQUOTE>
            <A href="http://docs.oracle.com/javase/8/docs/api/index.html">
               Valid Regular Expression Constructs
            </A>
         </BLOCKQUOTE>
   @param
      pFromIndex is the index of the character in pStr from which to start the search.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int[] indexOfRegex(Type1 pPattern, int pFromIndex)
      {
      return UString.indexOfRegex(this.iOrignlStr, pPattern, pFromIndex);
      }


   public <Type1> int[] indexOfRegexIgnoreCase(Type1 pPattern, int pFromIndex)
      {
      return UString.indexOfRegexIgnoreCase(this.iOrignlStr, pPattern, pFromIndex);
      }



   /*:                                    :METHOD:147:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method counts the newlines ('\n') between two indexes in this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#147">View source</A>

   @return
      This method returns the number of newlines ('\n') between the two indexes in this XString.

   @param
      pStart is the index of the character in this XString from which to start the search.
   @param
      pEnd is the index of the character in this XString at which to stop the search.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public int lineCount(int pStart, int pEnd)
      {
      return UString.lineCount(this.iOrignlStr, pStart, pEnd);
      }



   /*:                                    :METHOD:148:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns an ArrayList of the MatchResults for all the matches of a regular expression
   within this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#148">View source</A>

   @return
      This method returns an ArrayList<MatchResult> where each element of the ArrayList is a
      MatchResult for one match of a regular expression to this XString. All the matches of the regular
      expression in this XString are returned as MatchResults in the ArrayList.

   @param
      pRegex is the Object whose String representation is used as the regular expression.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> ArrayList<MatchResult> matchResults(Type1 pRegex)
      {
      return UString.matchResults(this.iOrignlStr, pRegex);
      }



   /*:                                    :METHOD:149:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns an ListOfLists<XString>, with each inner ArrayList<XString> containing all the
   groups (XStrings) returned from a regular expression match on this XString. All the regular
   expression matches on this XString are represented as separate ArrayList<XString> in the outer
   ArrayList.<P>
      <BLOCKQUOTE>
         => There is a one-to-one correspondence between each match and the outer ArrayList elements.
         => There is a one-to-one correspondence between the groups in a match and the inner
            ArrayList<XString> elements for that match.
      </BLOCKQUOTE>

   Note: To ensure the one-to-one correspondence between the groups in a match and the inner
         ArrayList<XString> elements for that match, it is possible for an element to have a null value
         instead of an XString. This can happen if a particular match does not have any data for one f
         the groups that the regular expression specifies

   <P><B>Implementation: </B><A HREF="XString.java.html#149">View source</A>

   @return
      This method returns an ListOfLists<XString>, with each inner ArrayList<XString> containing all
      the groups (Strings) returned from a regular expression match on this XString. All the regular
      expression matches on the XString are represented as separate ArrayList<XString> in the outer
      ArrayList.

   @param
      pStr is the Object whose String representation is searched for matches to a regular expression.
   @param
      pRegex is the Object whose String representation is used as the regular expression.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> ListOfLists<XString> matchResultsGroups(Type1 pRegex)
      {
      ListOfLists<String>   matchGroups = UString.matchResultsGroups(this.iOrignlStr, pRegex);
      return XString.toListOfXStringLists(matchGroups);
      }



   /*:                                    :METHOD:150:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns an ArrayList of HashMaps. For every match of a regular expression to a String,
   if a matching substring was found for any of an ArrayList of group names within the larger match,
   then the group name and its matched substring are put into a HashMap which is in turn put into an
   ArrayList. So the ArrayList ends up having one HashMap for each match that includes a matching
   substring for one or more of the group names.

   <P><B>Implementation: </B><A HREF="XString.java.html#150">View source</A>

   @return
      This method returns an ArrayList of HashMaps. For every match of a regular expression to a
      String, if a matching substring was found for any of an ArrayList of group names within the
      larger match, then the group name and its matched substring are put into a HashMap which is in
      turn put into an ArrayList. So the ArrayList ends up having one HashMap for each match that
      includes a matching substring for one or more of the group names.

   @param
      pStr is the Object whose String representation is searched for matches to a regular expression.
   @param
      pRegex is the Object whose String representation is used as the regular expression.
   @param
      pGroupNames is an ArrayList of Objects whose String representations are used as the group names
      to find matches for.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1, Type2> ListOfMaps<XString, XString> matchNamedGroupResults(Type1 pRegex, ArrayList<Type2> pGroupNames)
      {
      ListOfMaps<String, String>  matchGroups = UString.matchNamedGroupResults(this.iOrignlStr, pRegex, pGroupNames);
      return XString.toListOfXStringMaps(matchGroups);
      }



   /*:                                    :METHOD:151:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns a count of the number of times a substring occurs in this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#151">View source</A>

   @return
      This method returns a count of the number of times a substring occurs in this XString.

   @param
      pSubStr is the Object whose String representation is the substring that is searched for in this
      xString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int substringCount(Type1 pSubStr)
      {
      return UString.substringCount(this.iOrignlStr, pSubStr);
      }



   /*:                                    :METHOD:152:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns a count of the number of times a substring occurs in this XString. It ignores
   case in making comparisons of the substring against this XString.

   <P><B>Implementation: </B><A HREF="XString.java.html#152">View source</A>

   @return
      This method returns a count of the number of times a substring occurs in this XString.

   @param
      pSubStr is the Object whose String representation is the substring that is searched for in this
      xString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1> int substringCountIgnoreCase(Type1 pSubStr)
      {
      return UString.substringCountIgnoreCase(this.iOrignlStr, pSubStr);
      }



   /*:                                    :METHOD:153:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This boilerplate method is used for testing an instantiated object of this class and may include any
   code the developer chooses.

   <P><B>Implementation: </B><A HREF="XString.java.html#153">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public XString test() throws Exception
      {
      System.out.printf
         (
         "%s  %s  %s  %s",
         "\"HELLO WORLD!\"",
         "I'm an object of the", CLASS_NAME, "class, and I approved this message.\n"
         );
      return this;
      }



   /*:.
   ==============================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Protected  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ============================================================================================================== */



   /*:.
   ==============================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Private  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ============================================================================================================== */



   /*.
   ==========================================================================================
   Class Constants
      CLASS_NAME : the name of this class
   ------------------------------------------------------------------------------------------ */
   private static final XString  CLASS_NAME = new XString(XString.class.getName());
   /*.
   ==========================================================================================
   Class variables
      cVarName : something or other
   ------------------------------------------------------------------------------------------ */
   /*.
   ==========================================================================================
   Instance variables
      iOrignlStr : the decoree
   ------------------------------------------------------------------------------------------ */
   protected String  iOrignlStr = null;



   /*:.
   ==============================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Inner Classes  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ============================================================================================================== */



   /*::
   ======================================================================================================================== *//**
   This class hosts a type conversion method. Instances of this class can be passed into methods that convert the elements
   of complex data structures by applying the convert method of this class to the elements of the data structure.<P>

   In particular, instances of this class will convert any type that can be converted into a String into an XString. (See
   the UString.toString method to learn which types can be converted to a String, and thus to an XString by instances of
   this class.)
   *//*
   ======================================================================================================================== */
   public static class StringToXStringConverter<Type1> implements TypeConverter<Type1, XString>
      {
      public XString convert(Type1 pFrom)
         {
         return new XString(pFrom);
         }
      }



   /*:.
   ==============================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Public Static Methods  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ============================================================================================================== */



   /*:.
   ==============================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  The String API  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ============================================================================================================== */



   /*:                                    :METHOD:154:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns true if, and only if, the String is either null or empty (i.e. "").
      <BLOCKQUOTE>
         Note: The isEmpty() method in Java's standard String class returns true if, and only if, the
               String is <B><I>not null</I></B> and is empty (i.e. ""); otherwise, it returns false. If
               it is passed a null reference, it will throw a NullPointerException.
      </BLOCKQUOTE>


   <P><B>Implementation: </B><A HREF="XString.java.html#154">View source</A>

   @return
      This method returns true if, and only if, the String is either null or empty (i.e. "");
      otherwise, it returns false.

   @param
      pStr is the Object whose String representation is tested.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> boolean isNullOrEmpty(Type1 pStr)
      {
      return ((pStr == null) || UString.toString(pStr).isEmpty());
      }



   /*:                                    :METHOD:155:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns true if, and only if, the String is either null, or empty (i.e. ""),.or contains
   only whitespace.
      <BLOCKQUOTE>
         Note: The isEmpty() method in Java's standard String class returns true if, and only if, the
               String is <B><I>not null</I></B> and is empty (i.e. ""); otherwise, it returns false. If
               it is passed a null reference, it will throw a NullPointerException.
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#155">View source</A>

   @return
      This method returns true if, and only if, the String is either null, or empty (i.e. ""),.or
      contains only whitespace; otherwise, it returns false.

   @param
      pStr is the Object whose String representation is tested.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> boolean isNullOrEmptyOrWhitespace(Type1 pStr)
      {
      return ((pStr == null) || UString.toString(pStr).trim().isEmpty());
      }



   /*:                                    :METHOD:156:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns true if, and only if, the String is not null, and not empty (i.e. ""),.but
   contains only whitespace.
      <BLOCKQUOTE>
         Note: The isEmpty() method in Java's standard String class returns true if, and only if, the
               String is <B><I>not null</I></B> and is empty (i.e. ""); otherwise, it returns false. If
               it is passed a null reference, it will throw a NullPointerException.
      </BLOCKQUOTE>

   <P><B>Implementation: </B><A HREF="XString.java.html#156">View source</A>

   @return
      This method returns true if, and only if, the String is not null, and not empty (i.e. ""),.but
      contains only whitespace; otherwise, it returns false.

   @param
      pStr is the Object whose String representation is tested.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> boolean isNonEmptyWhitespace(Type1 pStr)
      {
      return ((pStr != null) && (! UString.toString(pStr).isEmpty()) && UString.toString(pStr).trim().isEmpty());
      }



   /*:                                    :METHOD:157:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#157">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> XString format(Type1 format, Object... args)
      {
      return new XString(UString.format(format,args));
      }



   /*:                                    :METHOD:158:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#158">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> XString format(Locale l, Type1 format, Object... args)
      {
      return new XString(UString.format(l,format,args));
      }



   /*:                                    :METHOD:159:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#159">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(Object obj)
      {
      return new XString(UString.valueOf(obj));
      }



   /*:                                    :METHOD:160:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#160">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(char data[])
      {
      return new XString(UString.valueOf(data));
      }



   /*:                                    :METHOD:161:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#161">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(char data[], int offset, int count)
      {
      return new XString(UString.valueOf(data,offset,count));
      }



   /*:                                    :METHOD:162:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#162">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString copyValueOf(char data[], int offset, int count)
      {
      return new XString(UString.copyValueOf(data,offset,count));
      }



   /*:                                    :METHOD:163:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#163">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString copyValueOf(char data[])
      {
      return new XString(UString.copyValueOf(data));
      }



   /*:                                    :METHOD:164:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#164">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(boolean b)
      {
      return new XString(UString.valueOf(b));
      }



   /*:                                    :METHOD:165:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#165">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(char c)
      {
      return new XString(UString.valueOf(c));
      }



   /*:                                    :METHOD:166:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#166">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(int i)
      {
      return new XString(UString.valueOf(i));
      }



   /*:                                    :METHOD:167:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#167">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(long l)
      {
      return new XString(UString.valueOf(l));
      }



   /*:                                    :METHOD:168:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#168">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(float f)
      {
      return new XString(UString.valueOf(f));
      }



   /*:                                    :METHOD:169:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   The description of this method is the same as the one for the method of the same name in the JDK SE
   API String Class documentation.<P>

      <B>
         Documentation:
      </B>
       <A HREF="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">
         View JDK SE API String Class
      </A>

   <P><B>Implementation: </B><A HREF="XString.java.html#169">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString valueOf(double d)
      {
      return new XString(UString.valueOf(d));
      }



   /*:.
   ==============================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  The Extensions  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ============================================================================================================== */



   /*:                                    :METHOD:170:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an XString of the specified length and filled with the specified char.

   <P><B>Implementation: </B><A HREF="XString.java.html#170">View source</A>

   @return
      A new XString containing pLength pFillChars

   @param
      pLength is the length of the XString to be created.
   @param
      pFillChar is the the character to be stored in every character position in the XString.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString fill(int pLength, char pFillChar)
      {
      return new XString(UString.fill(pLength, pFillChar));
      }



   /*:                                    :METHOD:171:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates a String representation of p.<P>

   <P><B>Implementation: </B><A HREF="XString.java.html#171">View source</A>

   @return
      A new String containing this XString

   @param
      P is the primitive type value or object whose String representation will be returned.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> XString toXString(Type1 p)
      {
      if (p == null)
         {
         return null;
         }
      return new XString(p);
      }



   /*:                                    :METHOD:172:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an XString[] representation of p[].

   <P><B>Implementation: </B><A HREF="XString.java.html#172">View source</A>

   @return
      A new XString[] containing the XString representation of the elements of p[]

   @param
      P is the array of primitive type values or objects that are converted into XStrings
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> XString[] toXStringArray(Type1[] p)
      {
      XString[]  result = new XString[p.length];
      for (int i=0; i<p.length; i++)
         {
         result[i] = XString.toXString(p[i]);
         }
      return result;
      }



   /*:                                    :METHOD:173:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an XString[] representation of p[].

   <P><B>Implementation: </B><A HREF="XString.java.html#173">View source</A>

   @return
      A new XString[] containing the XString representation of the elements of p[]

   @param
      P is the array of primitive type values or objects that are converted into XStrings
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> XString[] toXStringArray(List<Type1> p)
      {
      Object[]  a = p.toArray();
      return toXStringArray(a);
      }



   /*:                                    :METHOD:174:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an ArrayList<XString> representation of p.

   <P><B>Implementation: </B><A HREF="XString.java.html#174">View source</A>

   @return
      A new ArrayList<XString> containing the XString representation of the elements of p

   @param
      P is the list of primitive type values or objects that are converted into XStrings
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> ArrayList<XString> toXStringList(Type1[] p)
      {
      return new ArrayList<XString>(Arrays.asList(toXStringArray(p)));
      }



   /*:                                    :METHOD:175:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an ArrayList<XString> representation of p.

   <P><B>Implementation: </B><A HREF="XString.java.html#175">View source</A>

   @return
      A new ArrayList<XString> containing the XString representation of the elements of p

   @param
      P is the list of primitive type values or objects that are converted into XStrings
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> ArrayList<XString> toXStringList(List<Type1> p)
      {
      Object[]  a = p.toArray();
      return new ArrayList<XString>(Arrays.asList(toXStringArray(a)));
      }



   /*:                                    :METHOD:176:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method converts a ListOfLists<Type1> into a ListOfLists<XString>

   <P><B>Implementation: </B><A HREF="XString.java.html#176">View source</A>

   @return
      A copy of the ListOfLists<Type1> argument passed through pStrListOfLists in which all the Type1s
      are converted into XStrings.

   @param
      pStrListOfLists is a ListOfLists<Type1>, a copy of which will be made with all the Type1s
      converted to XStrings.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> ListOfLists<XString> toListOfXStringLists(ListOfLists<Type1> pStrListOfLists)
      {
      StringToXStringConverter<Type1>  converter = new StringToXStringConverter<Type1>();
      return pStrListOfLists.convert(converter);
      }



   /*:                                    :METHOD:177:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method converts a ListOfMaps<Type1, Type2> into a ListOfMaps<XString, XString>

   <P><B>Implementation: </B><A HREF="XString.java.html#177">View source</A>

   @return
      A copy of the ListOfMaps<Type1, Type2> argument passed through pStrListOfMaps in which all the
      Type1s and Type2s are converted into XStrings.

   @param
      pStrListOfMaps is a ListOfMaps<Type1, Type2>, a copy of which will be made with all the Type1s
      and Type2s converted to XStrings.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1, Type2> ListOfMaps<XString, XString> toListOfXStringMaps(ListOfMaps<Type1, Type2> pStrListOfMaps)
      {
      StringToXStringConverter<Type1>  keyConverter   = new StringToXStringConverter<Type1>();
      StringToXStringConverter<Type2>  valueConverter = new StringToXStringConverter<Type2>();
      return pStrListOfMaps.convert(keyConverter, valueConverter);
      }



   /*:                                    :METHOD:178:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method converts the parameter to its no-case representation.

   <P><B>Implementation: </B><A HREF="XString.java.html#178">View source</A>

   @return
      A reference to a new String in an no-case representation.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString noCase(XString pStr)
      {
      return new XString(UString.noCase(pStr));
      }



   /*:                                    :METHOD:179:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the length of the longest String representation of the elements of an array.

   <P><B>Implementation: </B><A HREF="XString.java.html#179">View source</A>

   @return
      The length of the longest String representation in the array.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> int longestStringLength(Type1[] pArray)
      {
      return UString.longestStringLength(pArray);
      }



   /*:                                    :METHOD:180:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method returns the length of the longest String representation of the elements of an ArrayList.

   <P><B>Implementation: </B><A HREF="XString.java.html#180">View source</A>

   @return
      The length of the longest String representation in the ArrayList.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1> int longestStringLength(ArrayList<Type1> pArray)
      {
      return UString.longestStringLength(pArray);
      }



   /*:                                    :METHOD:181:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   Create a String by catenating all the Strings in an ArrayList and separating them from each other
   with the specified delimiter.

   <P><B>Implementation: </B><A HREF="XString.java.html#181">View source</A>

   @return
      A String constructed by catenating all the Strings in an ArrayList together and separating them
      with the specified delimiter.

   @param
      pArrayList is the ArrayList to untokenize.
   @param
      pDelimiter is the delimiter that separates tokens in the string.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1,Type2> XString untokenizedArrayList(ArrayList<Type1> pArrayList, Type2 pDelimiter)
      {
      return new XString(UString.untokenizedArrayList(pArrayList,pDelimiter));
      }



   /*:                                    :METHOD:182:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method generates a hex string representation of a byte

   <P><B>Implementation: </B><A HREF="XString.java.html#182">View source</A>

   @return
      A String representation of the byte in hexidecimal format

   @param
      pByte is the byte for which the string is generated.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString toHexString(byte pByte)
      {
      return new XString(UString.toHexString(pByte));
      }



   /*:                                    :METHOD:183:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method generates a hex string representation of a byte array

   <P><B>Implementation: </B><A HREF="XString.java.html#183">View source</A>

   @return
      A String representation of the bytes in hexidecimal format

   @param
      pByte is the byte array for which the string is generated.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static XString toHexString(byte[] pByte)
      {
      return new XString(UString.toHexString(pByte));
      }



   /*:                                    :METHOD:184:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method allows this class file to be unit tested as a standalone application. It's the method
   that's called when the class is invoked from the command line by using the java application launcher
   - "java". Main() is not a required method, but the practice of putting one in each class and
   wrapping class test code within it allows easy unit testing of the class; and main does not need to
   be removed when testing is complete.

   <P>
      <DL>
         <DT>
            <B>
               Command line usage:
            </B>
            <DD>
               Java cosmicabyss.com.utl.XString
            </DD>
         </DT>
      </DL>

   <P><B>Implementation: </B><A HREF="XString.java.html#184">View source</A>

   @param
      pArgs contains the command line arguments with which this class was invoked as an application.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static void main(String[] pArgs) throws Exception
      {
      /*.
      ==========================================================================================
      Create an object
      ------------------------------------------------------------------------------------------ */
      XString  obj = new XString("words, and, delimiters, char, is, ,,, ,, , a, comma and/or,space");
      for (ArrayList<XString> listOfXStrings :  obj.getWordsAndDelimitersIgnoreCase(", "))
         {
         System.out.println("New List");
         for (XString str : listOfXStrings)
            {
            System.out.println("   <" + str.toString() + ">");
            }
         }


      System.out.println();
      System.out.println();
      System.out.println();
      XString  xxhamxx = new XString("XXham sandwichxx");
      XString  ham     = xxhamxx.trim("XX");
      System.out.println("          trim(\"XXham sandwichxx\", \"XX\")=|" + ham.string() + "|");

      ham = xxhamxx.trimIgnoreCase("XX");
      System.out.println("trimIgnoreCase(\"XXham sandwichxx\", \"XX\")=|" + ham.string() + "|");


      System.out.println();
      System.out.println();
      System.out.println();
      /*.
      ==========================================================================================
      Test code
      ------------------------------------------------------------------------------------------ */
      }


   }  // class XString


   /*:.
   ==============================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Notes  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ============================================================================================================== */