--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2019 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-NetFramework                                                        --
--    Version   : 1.0.0.0                                                     --
--                                                                            --
-- This program is free software: you can redistribute it and / or modify     --
-- it under the terms of the GNU Lesser General Public License as published by--
-- the Free Software Foundation, either version 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program is distributed in the hope that it will be useful,            --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of             --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the               --
-- GNU Lesser General Public License for more details.                        --
--                                                                            --
-- You should have received a copy of the GNU Lesser General Public License   --
-- along with this program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with NetFrameworkBase.System.Object;
limited with NetFrameworkBase.System.StringComparison;
limited with NetFrameworkBase.System.StringSplitOptions;
limited with NetFrameworkBase.System.Text.NormalizationForm;
limited with NetFrameworkBase.System.Globalization.CultureInfo;
limited with NetFrameworkBase.System.Globalization.CompareOptions;
limited with NetFrameworkBase.System.IFormatProvider;
limited with NetFrameworkBase.System.Text.Encoding;
limited with NetFrameworkBase.System.TypeCode;
limited with NetFrameworkBase.System.CharEnumerator;
--------------------------------------------------------------------------------
package NetFrameworkBase.System.String is
   
   type Kind is new NetFrameworkBase.System.Object.Kind with null record;
   type Kind_Ptr is access all Kind;
   type Kind_Array is array(Natural range<>) of Kind_Ptr;
   type Kind_Array_Ptr is access all Kind_Array;
   
      function Join
      (
         separator : NetFrameworkBase.BSTR; 
         value : NetFrameworkBase.BSTR_Array
      )
      return NetFrameworkBase.BSTR;
      
      function Join
      (
         separator : NetFrameworkBase.BSTR; 
         values : NetFrameworkBase.System.Object.Kind_Array
      )
      return NetFrameworkBase.BSTR;
      
      function Join
      (
         separator : NetFrameworkBase.BSTR; 
         value : NetFrameworkBase.BSTR_Array; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function Equals
      (
         this : in out String.Kind;
         obj : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function Equals
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function Equals
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function Equals
      (
         a : NetFrameworkBase.BSTR; 
         b : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function Equals
      (
         a : NetFrameworkBase.BSTR; 
         b : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function op_Equality
      (
         a : NetFrameworkBase.BSTR; 
         b : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      function "="(a : NetFrameworkBase.BSTR; b : NetFrameworkBase.BSTR) return NetFrameworkBase.Boolean renames op_Equality;
      
      function op_Inequality
      (
         a : NetFrameworkBase.BSTR; 
         b : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      procedure CopyTo
      (
         this : in out String.Kind;
         sourceIndex : NetFrameworkBase.Int32; 
         destination : NetFrameworkBase.Wide_Char_Array; 
         destinationIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      );
      
      function ToCharArray
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.Wide_Char_Array;
      
      function ToCharArray
      (
         this : in out String.Kind;
         startIndex : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Wide_Char_Array;
      
      function IsNullOrEmpty
      (
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function IsNullOrWhiteSpace
      (
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function GetHashCode
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.Int32;
      
      function Split
      (
         this : in out String.Kind;
         separator : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.BSTR_Array;
      
      function Split
      (
         this : in out String.Kind;
         separator : NetFrameworkBase.Wide_Char_Array; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR_Array;
      
      function Split
      (
         this : in out String.Kind;
         separator : NetFrameworkBase.Wide_Char_Array; 
         options : NetFrameworkBase.System.StringSplitOptions.Kind
      )
      return NetFrameworkBase.BSTR_Array;
      
      function Split
      (
         this : in out String.Kind;
         separator : NetFrameworkBase.Wide_Char_Array; 
         count : NetFrameworkBase.Int32; 
         options : NetFrameworkBase.System.StringSplitOptions.Kind
      )
      return NetFrameworkBase.BSTR_Array;
      
      function Split
      (
         this : in out String.Kind;
         separator : NetFrameworkBase.BSTR_Array; 
         options : NetFrameworkBase.System.StringSplitOptions.Kind
      )
      return NetFrameworkBase.BSTR_Array;
      
      function Split
      (
         this : in out String.Kind;
         separator : NetFrameworkBase.BSTR_Array; 
         count : NetFrameworkBase.Int32; 
         options : NetFrameworkBase.System.StringSplitOptions.Kind
      )
      return NetFrameworkBase.BSTR_Array;
      
      function Substring
      (
         this : in out String.Kind;
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function Substring
      (
         this : in out String.Kind;
         startIndex : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function Trim
      (
         this : in out String.Kind;
         trimChars : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.BSTR;
      
      function TrimStart
      (
         this : in out String.Kind;
         trimChars : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.BSTR;
      
      function TrimEnd
      (
         this : in out String.Kind;
         trimChars : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.BSTR;
      
      function IsNormalized
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNormalized
      (
         this : in out String.Kind;
         normalizationForm : NetFrameworkBase.System.Text.NormalizationForm.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function Normalize
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function Normalize
      (
         this : in out String.Kind;
         normalizationForm : NetFrameworkBase.System.Text.NormalizationForm.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         strB : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         strB : NetFrameworkBase.BSTR; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         strB : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         strB : NetFrameworkBase.BSTR; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr; 
         options : NetFrameworkBase.System.Globalization.CompareOptions.Kind
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         strB : NetFrameworkBase.BSTR; 
         ignoreCase : NetFrameworkBase.Boolean; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         indexA : NetFrameworkBase.Int32; 
         strB : NetFrameworkBase.BSTR; 
         indexB : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         indexA : NetFrameworkBase.Int32; 
         strB : NetFrameworkBase.BSTR; 
         indexB : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         indexA : NetFrameworkBase.Int32; 
         strB : NetFrameworkBase.BSTR; 
         indexB : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32; 
         ignoreCase : NetFrameworkBase.Boolean; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         indexA : NetFrameworkBase.Int32; 
         strB : NetFrameworkBase.BSTR; 
         indexB : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr; 
         options : NetFrameworkBase.System.Globalization.CompareOptions.Kind
      )
      return NetFrameworkBase.Int32;
      
      function Compare
      (
         strA : NetFrameworkBase.BSTR; 
         indexA : NetFrameworkBase.Int32; 
         strB : NetFrameworkBase.BSTR; 
         indexB : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function CompareTo
      (
         this : in out String.Kind;
         value : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.Int32;
      
      function CompareTo
      (
         this : in out String.Kind;
         strB : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Int32;
      
      function CompareOrdinal
      (
         strA : NetFrameworkBase.BSTR; 
         strB : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Int32;
      
      function CompareOrdinal
      (
         strA : NetFrameworkBase.BSTR; 
         indexA : NetFrameworkBase.Int32; 
         strB : NetFrameworkBase.BSTR; 
         indexB : NetFrameworkBase.Int32; 
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function Contains
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function EndsWith
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function EndsWith
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function EndsWith
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         ignoreCase : NetFrameworkBase.Boolean; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.Wide_Char
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.Wide_Char; 
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function IndexOfAny
      (
         this : in out String.Kind;
         anyOf : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.Int32;
      
      function IndexOfAny
      (
         this : in out String.Kind;
         anyOf : NetFrameworkBase.Wide_Char_Array; 
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.Wide_Char
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.Wide_Char; 
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOfAny
      (
         this : in out String.Kind;
         anyOf : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOfAny
      (
         this : in out String.Kind;
         anyOf : NetFrameworkBase.Wide_Char_Array; 
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Int32;
      
      function PadLeft
      (
         this : in out String.Kind;
         totalWidth : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function PadLeft
      (
         this : in out String.Kind;
         totalWidth : NetFrameworkBase.Int32; 
         paddingChar : NetFrameworkBase.Wide_Char
      )
      return NetFrameworkBase.BSTR;
      
      function PadRight
      (
         this : in out String.Kind;
         totalWidth : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function PadRight
      (
         this : in out String.Kind;
         totalWidth : NetFrameworkBase.Int32; 
         paddingChar : NetFrameworkBase.Wide_Char
      )
      return NetFrameworkBase.BSTR;
      
      function StartsWith
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.Boolean;
      
      function StartsWith
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         comparisonType : NetFrameworkBase.System.StringComparison.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function StartsWith
      (
         this : in out String.Kind;
         value : NetFrameworkBase.BSTR; 
         ignoreCase : NetFrameworkBase.Boolean; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function ToLower
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function ToLower
      (
         this : in out String.Kind;
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function ToLowerInvariant
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function ToUpper
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function ToUpper
      (
         this : in out String.Kind;
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function ToUpperInvariant
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function ToString
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function ToString
      (
         this : in out String.Kind;
         provider : NetFrameworkBase.System.IFormatProvider.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Clone
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.System.Object.Kind_Ptr;
      
      function Trim
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function Insert
      (
         this : in out String.Kind;
         startIndex : NetFrameworkBase.Int32; 
         value : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function Replace
      (
         this : in out String.Kind;
         oldChar : NetFrameworkBase.Wide_Char; 
         newChar : NetFrameworkBase.Wide_Char
      )
      return NetFrameworkBase.BSTR;
      
      function Replace
      (
         this : in out String.Kind;
         oldValue : NetFrameworkBase.BSTR; 
         newValue : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function Remove
      (
         this : in out String.Kind;
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function Remove
      (
         this : in out String.Kind;
         startIndex : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         format : NetFrameworkBase.BSTR; 
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         format : NetFrameworkBase.BSTR; 
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         format : NetFrameworkBase.BSTR; 
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg2 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         provider : NetFrameworkBase.System.IFormatProvider.Kind_Ptr; 
         format : NetFrameworkBase.BSTR; 
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         provider : NetFrameworkBase.System.IFormatProvider.Kind_Ptr; 
         format : NetFrameworkBase.BSTR; 
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         provider : NetFrameworkBase.System.IFormatProvider.Kind_Ptr; 
         format : NetFrameworkBase.BSTR; 
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg2 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Copy
      (
         str : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg2 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         arg0 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg1 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg2 : NetFrameworkBase.System.Object.Kind_Ptr; 
         arg3 : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         args : NetFrameworkBase.System.Object.Kind_Array
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         str0 : NetFrameworkBase.BSTR; 
         str1 : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         str0 : NetFrameworkBase.BSTR; 
         str1 : NetFrameworkBase.BSTR; 
         str2 : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         str0 : NetFrameworkBase.BSTR; 
         str1 : NetFrameworkBase.BSTR; 
         str2 : NetFrameworkBase.BSTR; 
         str3 : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function Concat
      (
         values : NetFrameworkBase.BSTR_Array
      )
      return NetFrameworkBase.BSTR;
      
      function Intern
      (
         str : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function IsInterned
      (
         str : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.BSTR;
      
      function GetTypeCode
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.System.TypeCode.Kind;
      
      function GetEnumerator
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.System.CharEnumerator.Kind_Ptr;
      
      function Chars
      (
         this : in out String.Kind;
         index : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Wide_Char;
      
      function Length
      (
         this : in out String.Kind
      )
      return NetFrameworkBase.Int32;
      
      function IndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.Wide_Char; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function IndexOfAny
      (
         this : in out String.Kind;
         anyOf : NetFrameworkBase.Wide_Char_Array; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOf
      (
         this : in out String.Kind;
         value : NetFrameworkBase.Wide_Char; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function LastIndexOfAny
      (
         this : in out String.Kind;
         anyOf : NetFrameworkBase.Wide_Char_Array; 
         startIndex : NetFrameworkBase.Int32; 
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Int32;
      
      function Format
      (
         format : NetFrameworkBase.BSTR; 
         args : NetFrameworkBase.System.Object.Kind_Array
      )
      return NetFrameworkBase.BSTR;
      
      function Format
      (
         provider : NetFrameworkBase.System.IFormatProvider.Kind_Ptr; 
         format : NetFrameworkBase.BSTR; 
         args : NetFrameworkBase.System.Object.Kind_Array
      )
      return NetFrameworkBase.BSTR;
      
      function Constructor
      (
         value : NetFrameworkBase.Wide_Char_Ptr
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         value : NetFrameworkBase.Wide_Char_Ptr;
         startIndex : NetFrameworkBase.Int32;
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         value : NetFrameworkBase.SByte_Ptr
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         value : NetFrameworkBase.SByte_Ptr;
         startIndex : NetFrameworkBase.Int32;
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         value : NetFrameworkBase.SByte_Ptr;
         startIndex : NetFrameworkBase.Int32;
         length : NetFrameworkBase.Int32;
         enc : NetFrameworkBase.System.Text.Encoding.Kind_Ptr
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         value : NetFrameworkBase.Wide_Char_Array;
         startIndex : NetFrameworkBase.Int32;
         length : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         value : NetFrameworkBase.Wide_Char_Array
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
      function Constructor
      (
         c : NetFrameworkBase.Wide_Char;
         count : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.String.Kind_Ptr;
      
end;
