(* Struture // NEW structure
  program WatchesPrg;

  type
   {$DEFINE Global_Type}

  {$DEFINE Global_Implementation}

  procedure FooFuncArray(  {$DEFINE FooFunc_Param}  }
      {$DEFINE FooFunc_Local}  // type / var
    begin
      {$DEFINE FooFunc_Body}
    end;

  var
    {$DEFINE Global_Var}

  begin
    {$DEFINE Global_Body}
    FooFunc(   {$DEFINE Global_Call_FooFunc}   );
    {$DEFINE Global_Body_NIL}
    FooFunc(   {$DEFINE Global_Call_FooFunc}   );
  end;

*)

  {%region  TYPE}
    {$IFDEF Global_Type}
    //type
      TObjectInArray = class public foo: Integer; end;
      TRecordInArray = record foo: Integer; end;

      TDynIntArray = Array of Integer;
      PDynIntArray = ^TDynIntArray;
      TStatIntArray = Array [5..9] of Integer;
      PStatIntArray = ^TStatIntArray;

      TDynObjArray = Array of TObjectInArray;
      PDynObjArray = ^TDynIntArray;
      TStatObjArray = Array [5..9] of TObjectInArray;
      PStatObjArray = ^TStatIntArray;

      TDynRecArray = Array of TRecordInArray;
      PDynRecArray = ^TDynIntArray;
      TStatRecArray = Array [5..9] of TRecordInArray;
      PStatRecArray = ^TStatIntArray;

      TDynIntArray2 = Array of TDynIntArray;


    // dyn array with record
      TRecForArray1 = record  // has NO named pointer to it
        a : integer;
        b : integer;
      end;
      TRecForArray3 = record  // has NO named pointer to it
        a : integer;
        b : integer;
      end;

      TDArrayTRec1 = array of TRecForArray1;

      TRecForArray2 = record  // has named pointer to it
        c : integer;
        recs : TDArrayTRec1;
      end;
      PRecForArray2 = ^TRecForArray2;
      TRecForArray4 = record  // has named pointer to it
        c : integer;
        recs : TDArrayTRec1;
      end;
      PRecForArray4 = ^TRecForArray4;

      // dyn arrays
      TDynArrayTRec1      = array of TRecForArray3;
        TDynArrayTRec1NP  = array of TRecForArray3; // for use as name-less pointer to this
      TDynArrayPRec1      = array of ^TRecForArray3;
      TDynDynArrayTRec1   = array of array of TRecForArray1;
      TDynDynArrayPRec1   = array of array of ^TRecForArray1;
      TDynStatArrayTRec1  = array of array [3..5] of TRecForArray1;
      TDynStatArrayPRec1  = array of array [3..5] of ^TRecForArray1;

      TDynArrayTRec2      = array of TRecForArray4;
      TDynArrayPRec2      = array of ^TRecForArray4;
      TDynArrayPPRec2     = array of ^PRecForArray4; // double pointer
      TDynDynArrayTRec2   = array of array of TRecForArray2;
      TDynDynArrayPRec2   = array of array of ^TRecForArray2;
      TDynStatArrayTRec2  = array of array [3..5] of TRecForArray2;
      TDynStatArrayPRec2  = array of array [3..5] of ^TRecForArray2;


      // stat arrays
      TStatArrayTRec1     = array [3..5] of TRecForArray3;
        TStatArrayTRec1NP = array [3..5] of TRecForArray3; // for use as name-less pointer to this
      TStatArrayPRec1     = array [3..5] of ^TRecForArray3;
      TStatDynArrayTRec1  = array [3..5] of array of TRecForArray1;
      TStatDynArrayPRec1  = array [3..5] of array of ^TRecForArray1;
      TStatStatArrayTRec1 = array [3..5] of array [3..5] of TRecForArray1;
      TStatStatArrayPRec1 = array [3..5] of array [3..5] of ^TRecForArray1;

      TStatArrayTRec2     = array [3..5] of TRecForArray4;
      TStatArrayPRec2     = array [3..5] of ^TRecForArray4;
      TStatArrayPPRec2    = array [3..5] of ^PRecForArray4; // double pointer
      TStatDynArrayTRec2  = array [3..5] of array of TRecForArray2;
      TStatDynArrayPRec2  = array [3..5] of array of ^TRecForArray2;
      TStatStatArrayTRec2 = array [3..5] of array [3..5] of TRecForArray2;
      TStatStatArrayPRec2 = array [3..5] of array [3..5] of ^TRecForArray2;


      // dyn arrays of named arrays
      TDynDynTRec1Array   = array of TDynArrayTRec1;
      TDynDynPRec1Array   = array of TDynArrayPRec1;
      TDynStatTRec1Array  = array of TStatArrayTRec1;
      TDynStatPRec1Array  = array of TStatArrayPRec1;
      TDynPDynTRec1Array   = array of ^TDynArrayTRec1;
      TDynPStatTRec1Array  = array of ^TStatArrayTRec1;
      TDynPDynTRec1NPArray = array of ^TDynArrayTRec1NP;
      TDynPStatTRec1NPArray= array of ^TStatArrayTRec1NP;

      TDynDynTRec2Array   = array of TDynArrayTRec2;
      TDynDynPrec2Array   = array of TDynArrayPRec2;
      TDynDynPPrec2Array  = array of TDynArrayPPRec2; // double pointer
      TDynStatTRec2Array  = array of TStatArrayTRec2;
      TDynStatPRec2Array  = array of TStatArrayPRec2;
      TDynStatPPRec2Array = array of TStatArrayPPRec2; // double pointer

      // stat arrays of named arrays
      TStatDynTRec1Array   = array [3..5] of TDynArrayTRec1;
      TStatDynPrec1Array   = array [3..5] of TDynArrayPRec1;
      TStatStatTRec1Array  = array [3..5] of TStatArrayTRec1;
      TStatStatPRec1Array  = array [3..5] of TStatArrayPRec1;
      TStatPDynTRec1Array   = array [3..5] of ^TDynArrayTRec1;// TODO name-less pointer to an array [3..5]
      TStatPStatTRec1Array  = array [3..5] of ^TStatArrayTRec1;

      TStatDynTRec2Array   = array [3..5] of TDynArrayTRec2;
      TStatDynPrec2Array   = array [3..5] of TDynArrayPRec2;
      TStatDynPPrec2Array  = array [3..5] of TDynArrayPPRec2; // double pointer
      TStatStatTRec2Array  = array [3..5] of TStatArrayTRec2;
      TStatStatPRec2Array  = array [3..5] of TStatArrayPRec2;
      TStatStatPPRec2Array = array [3..5] of TStatArrayPPRec2; // double pointer


// POINTER

      // dyn arrays
      PDynArrayTRec1      = ^TDynArrayTRec1;
      PDynArrayPRec1      = ^TDynArrayPRec1;
      PDynDynArrayTRec1   = ^TDynDynArrayTRec1;
      PDynDynArrayPRec1   = ^TDynDynArrayPRec1;
      PDynStatArrayTRec1  = ^TDynStatArrayTRec1;
      PDynStatArrayPRec1  = ^TDynStatArrayPRec1;

      PDynArrayTRec2      = ^TDynArrayTRec2;
      PDynArrayPRec2      = ^TDynArrayPRec2;
      PDynArrayPPRec2     = ^TDynArrayPPRec2;
      PDynDynArrayTRec2   = ^TDynDynArrayTRec2;
      PDynDynArrayPRec2   = ^TDynDynArrayPRec2;
      PDynStatArrayTRec2  = ^TDynStatArrayTRec2;
      PDynStatArrayPRec2  = ^TDynStatArrayPRec2;


      // stat arrays
      PStatArrayTRec1     = ^TStatArrayTRec1;
      PStatArrayPRec1     = ^TStatArrayPRec1;
      PStatDynArrayTRec1  = ^TStatDynArrayTRec1;
      PStatDynArrayPRec1  = ^TStatDynArrayPRec1;
      PStatStatArrayTRec1 = ^TStatStatArrayTRec1;
      PStatStatArrayPRec1 = ^TStatStatArrayPRec1;

      PStatArrayTRec2     = ^TStatArrayTRec2;
      PStatArrayPRec2     = ^TStatArrayPRec2;
      PStatArrayPPRec2    = ^TStatArrayPPRec2;
      PStatDynArrayTRec2  = ^TStatDynArrayTRec2;
      PStatDynArrayPRec2  = ^TStatDynArrayPRec2;
      PStatStatArrayTRec2 = ^TStatStatArrayTRec2;
      PStatStatArrayPRec2 = ^TStatStatArrayPRec2;


      // dyn arrays of named arrays
      PDynDynTRec1Array   = ^TDynDynTRec1Array;
      PDynDynPrec1Array   = ^TDynDynPrec1Array;
      PDynStatTRec1Array  = ^TDynStatTRec1Array;
      PDynStatPRec1Array  = ^TDynStatPRec1Array;
      PDynPDynTRec1Array  = ^TDynPDynTRec1Array;
      PDynPStatTRec1Array = ^TDynPStatTRec1Array;
      PDynPDynTRec1NPArray = ^TDynPDynTRec1NPArray;
      PDynPStatTRec1NPArray= ^TDynPStatTRec1NPArray;

      PDynDynTRec2Array   = ^TDynDynTRec2Array;
      PDynDynPrec2Array   = ^TDynDynPrec2Array;
      PDynDynPPrec2Array  = ^TDynDynPPrec2Array;
      PDynStatTRec2Array  = ^TDynStatTRec2Array;
      PDynStatPRec2Array  = ^TDynStatPRec2Array;
      PDynStatPPRec2Array = ^TDynStatPPRec2Array;

      // stat arrays of named arrays
      PStatDynTRec1Array   = ^TStatDynTRec1Array;
      PStatDynPrec1Array   = ^TStatDynPrec1Array;
      PStatStatTRec1Array  = ^TStatStatTRec1Array;
      PStatStatPRec1Array  = ^TStatStatPRec1Array;
      PStatPDynTRec1Array  = ^TStatPDynTRec1Array;
      PStatPStatTRec1Array = ^TStatPStatTRec1Array;

      PStatDynTRec2Array   = ^TStatDynTRec2Array;
      PStatDynPrec2Array   = ^TStatDynPrec2Array;
      PStatDynPPrec2Array  = ^TStatDynPPrec2Array;
      PStatStatTRec2Array  = ^TStatStatTRec2Array;
      PStatStatPRec2Array  = ^TStatStatPRec2Array;
      PStatStatPPRec2Array = ^TStatStatPPRec2Array;

      TEnunForArray = (eaOne, eaTwo, eaThree);
      TEnumArrayTRec1     = array [TEnunForArray] of TRecForArray3;
      TSubEnumArrayTRec1  = array [eaTwo..eaThree] of TRecForArray3;
      PEnumArrayTRec1     = ^TEnumArrayTRec1;
      PSubEnumArrayTRec1  = ^TSubEnumArrayTRec1;

      TStatDualArrayTRec2 = array [3..5, 3..5] of TRecForArray2;


    {$ENDIF}
  {%endregion}

  {%region VARIABLES}
    {$IFDEF FooFunc_Param}
    //procedure FooFunc(

      // dyn arrays
      ArgTDynArrayTRec1: TDynArrayTRec1;            var VArgTDynArrayTRec1: TDynArrayTRec1;
      ArgTDynArrayPRec1: TDynArrayPRec1;            var VArgTDynArrayPRec1: TDynArrayPRec1;
      ArgTDynDynArrayTRec1: TDynDynArrayTRec1;      var VArgTDynDynArrayTRec1: TDynDynArrayTRec1;
      ArgTDynDynArrayPRec1: TDynDynArrayPRec1;      var VArgTDynDynArrayPRec1: TDynDynArrayPRec1;
      ArgTDynStatArrayTRec1: TDynStatArrayTRec1;    var VArgTDynStatArrayTRec1: TDynStatArrayTRec1;
      ArgTDynStatArrayPRec1: TDynStatArrayPRec1;    var VArgTDynStatArrayPRec1: TDynStatArrayPRec1;

      ArgTDynArrayTRec2: TDynArrayTRec2;            var VArgTDynArrayTRec2: TDynArrayTRec2;
      ArgTDynArrayPRec2: TDynArrayPRec2;            var VArgTDynArrayPRec2: TDynArrayPRec2;
      ArgTDynArrayPPRec2: TDynArrayPPRec2;          var VArgTDynArrayPPRec2: TDynArrayPPRec2;
      ArgTDynDynArrayTRec2: TDynDynArrayTRec2;      var VArgTDynDynArrayTRec2: TDynDynArrayTRec2;
      ArgTDynDynArrayPRec2: TDynDynArrayPRec2;      var VArgTDynDynArrayPRec2: TDynDynArrayPRec2;
      ArgTDynStatArrayTRec2: TDynStatArrayTRec2;    var VArgTDynStatArrayTRec2: TDynStatArrayTRec2;
      ArgTDynStatArrayPRec2: TDynStatArrayPRec2;    var VArgTDynStatArrayPRec2: TDynStatArrayPRec2;


      // stat arrays
      ArgTStatArrayTRec1: TStatArrayTRec1;          var VArgTStatArrayTRec1: TStatArrayTRec1;
      ArgTStatArrayPRec1: TStatArrayPRec1;          var VArgTStatArrayPRec1: TStatArrayPRec1;
      ArgTStatDynArrayTRec1: TStatDynArrayTRec1;    var VArgTStatDynArrayTRec1: TStatDynArrayTRec1;
      ArgTStatDynArrayPRec1: TStatDynArrayPRec1;    var VArgTStatDynArrayPRec1: TStatDynArrayPRec1;
      ArgTStatStatArrayTRec1: TStatStatArrayTRec1;  var VArgTStatStatArrayTRec1: TStatStatArrayTRec1;
      ArgTStatStatArrayPRec1: TStatStatArrayPRec1;  var VArgTStatStatArrayPRec1: TStatStatArrayPRec1;

      ArgTStatArrayTRec2: TStatArrayTRec2;          var VArgTStatArrayTRec2: TStatArrayTRec2;
      ArgTStatArrayPRec2: TStatArrayPRec2;          var VArgTStatArrayPRec2: TStatArrayPRec2;
      ArgTStatArrayPPRec2: TStatArrayPPRec2;        var VArgTStatArrayPPRec2: TStatArrayPPRec2;
      ArgTStatDynArrayTRec2: TStatDynArrayTRec2;    var VArgTStatDynArrayTRec2: TStatDynArrayTRec2;
      ArgTStatDynArrayPRec2: TStatDynArrayPRec2;    var VArgTStatDynArrayPRec2: TStatDynArrayPRec2;
      ArgTStatStatArrayTRec2: TStatStatArrayTRec2;  var VArgTStatStatArrayTRec2: TStatStatArrayTRec2;
      ArgTStatStatArrayPRec2: TStatStatArrayPRec2;  var VArgTStatStatArrayPRec2: TStatStatArrayPRec2;


      // dyn arrays of named arrays
      ArgTDynDynTRec1Array: TDynDynTRec1Array;      var VArgTDynDynTRec1Array: TDynDynTRec1Array;
      ArgTDynDynPrec1Array: TDynDynPrec1Array;      var VArgTDynDynPrec1Array: TDynDynPrec1Array;
      ArgTDynStatTRec1Array: TDynStatTRec1Array;    var VArgTDynStatTRec1Array: TDynStatTRec1Array;
      ArgTDynStatPRec1Array: TDynStatPRec1Array;    var VArgTDynStatPRec1Array: TDynStatPRec1Array;
      ArgTDynPDynTRec1Array: TDynPDynTRec1Array;     var VArgTDynPDynTRec1Array: TDynPDynTRec1Array;
      ArgTDynPStatTRec1Array: TDynPStatTRec1Array;   var VArgTDynPStatTRec1Array: TDynPStatTRec1Array;
      ArgTDynPDynTRec1NPArray: TDynPDynTRec1NPArray; var VArgTDynPDynTRec1NPArray: TDynPDynTRec1NPArray;
      ArgTDynPStatTRec1NPArray: TDynPStatTRec1NPArray;var VArgTDynPStatTRec1NPArray: TDynPStatTRec1NPArray;

      ArgTDynDynTRec2Array: TDynDynTRec2Array;      var VArgTDynDynTRec2Array: TDynDynTRec2Array;
      ArgTDynDynPrec2Array: TDynDynPrec2Array;      var VArgTDynDynPrec2Array: TDynDynPrec2Array;
      ArgTDynDynPPrec2Array: TDynDynPPrec2Array;    var VArgTDynDynPPrec2Array: TDynDynPPrec2Array;
      ArgTDynStatTRec2Array: TDynStatTRec2Array;    var VArgTDynStatTRec2Array: TDynStatTRec2Array;
      ArgTDynStatPRec2Array: TDynStatPRec2Array;    var VArgTDynStatPRec2Array: TDynStatPRec2Array;
      ArgTDynStatPPRec2Array: TDynStatPPRec2Array;  var VArgTDynStatPPRec2Array: TDynStatPPRec2Array;

      // stat arrays of named arrays
      ArgTStatDynTRec1Array: TStatDynTRec1Array;      var VArgTStatDynTRec1Array: TStatDynTRec1Array;
      ArgTStatDynPrec1Array: TStatDynPrec1Array;      var VArgTStatDynPrec1Array: TStatDynPrec1Array;
      ArgTStatStatTRec1Array: TStatStatTRec1Array;    var VArgTStatStatTRec1Array: TStatStatTRec1Array;
      ArgTStatStatPRec1Array: TStatStatPRec1Array;    var VArgTStatStatPRec1Array: TStatStatPRec1Array;
      ArgTStatPDynTRec1Array: TStatPDynTRec1Array;     var VArgTStatPDynTRec1Array: TStatPDynTRec1Array;
      ArgTStatPStatTRec1Array: TStatPStatTRec1Array;   var VArgTStatPStatTRec1Array: TStatPStatTRec1Array;

      ArgTStatDynTRec2Array: TStatDynTRec2Array;      var VArgTStatDynTRec2Array: TStatDynTRec2Array;
      ArgTStatDynPrec2Array: TStatDynPrec2Array;      var VArgTStatDynPrec2Array: TStatDynPrec2Array;
      ArgTStatDynPPrec2Array: TStatDynPPrec2Array;    var VArgTStatDynPPrec2Array: TStatDynPPrec2Array;
      ArgTStatStatTRec2Array: TStatStatTRec2Array;    var VArgTStatStatTRec2Array: TStatStatTRec2Array;
      ArgTStatStatPRec2Array: TStatStatPRec2Array;    var VArgTStatStatPRec2Array: TStatStatPRec2Array;
      ArgTStatStatPPRec2Array: TStatStatPPRec2Array;  var VArgTStatStatPPRec2Array: TStatStatPPRec2Array;

// POINTER

      // dyn arrays
      ArgPDynArrayTRec1: PDynArrayTRec1;            var VArgPDynArrayTRec1: PDynArrayTRec1;
      ArgPDynArrayPRec1: PDynArrayPRec1;            var VArgPDynArrayPRec1: PDynArrayPRec1;
      ArgPDynDynArrayTRec1: PDynDynArrayTRec1;      var VArgPDynDynArrayTRec1: PDynDynArrayTRec1;
      ArgPDynDynArrayPRec1: PDynDynArrayPRec1;      var VArgPDynDynArrayPRec1: PDynDynArrayPRec1;
      ArgPDynStatArrayTRec1: PDynStatArrayTRec1;    var VArgPDynStatArrayTRec1: PDynStatArrayTRec1;
      ArgPDynStatArrayPRec1: PDynStatArrayPRec1;    var VArgPDynStatArrayPRec1: PDynStatArrayPRec1;

      ArgPDynArrayTRec2: PDynArrayTRec2;            var VArgPDynArrayTRec2: PDynArrayTRec2;
      ArgPDynArrayPRec2: PDynArrayPRec2;            var VArgPDynArrayPRec2: PDynArrayPRec2;
      ArgPDynArrayPPRec2: PDynArrayPPRec2;          var VArgPDynArrayPPRec2: PDynArrayPPRec2;
      ArgPDynDynArrayTRec2: PDynDynArrayTRec2;      var VArgPDynDynArrayTRec2: PDynDynArrayTRec2;
      ArgPDynDynArrayPRec2: PDynDynArrayPRec2;      var VArgPDynDynArrayPRec2: PDynDynArrayPRec2;
      ArgPDynStatArrayTRec2: PDynStatArrayTRec2;    var VArgPDynStatArrayTRec2: PDynStatArrayTRec2;
      ArgPDynStatArrayPRec2: PDynStatArrayPRec2;    var VArgPDynStatArrayPRec2: PDynStatArrayPRec2;


      // stat arrays
      ArgPStatArrayTRec1: PStatArrayTRec1;          var VArgPStatArrayTRec1: PStatArrayTRec1;
      ArgPStatArrayPRec1: PStatArrayPRec1;          var VArgPStatArrayPRec1: PStatArrayPRec1;
      ArgPStatDynArrayTRec1: PStatDynArrayTRec1;    var VArgPStatDynArrayTRec1: PStatDynArrayTRec1;
      ArgPStatDynArrayPRec1: PStatDynArrayPRec1;    var VArgPStatDynArrayPRec1: PStatDynArrayPRec1;
      ArgPStatStatArrayTRec1: PStatStatArrayTRec1;  var VArgPStatStatArrayTRec1: PStatStatArrayTRec1;
      ArgPStatStatArrayPRec1: PStatStatArrayPRec1;  var VArgPStatStatArrayPRec1: PStatStatArrayPRec1;

      ArgPStatArrayTRec2: PStatArrayTRec2;          var VArgPStatArrayTRec2: PStatArrayTRec2;
      ArgPStatArrayPRec2: PStatArrayPRec2;          var VArgPStatArrayPRec2: PStatArrayPRec2;
      ArgPStatArrayPPRec2: PStatArrayPPRec2;        var VArgPStatArrayPPRec2: PStatArrayPPRec2;
      ArgPStatDynArrayTRec2: PStatDynArrayTRec2;    var VArgPStatDynArrayTRec2: PStatDynArrayTRec2;
      ArgPStatDynArrayPRec2: PStatDynArrayPRec2;    var VArgPStatDynArrayPRec2: PStatDynArrayPRec2;
      ArgPStatStatArrayTRec2: PStatStatArrayTRec2;  var VArgPStatStatArrayTRec2: PStatStatArrayTRec2;
      ArgPStatStatArrayPRec2: PStatStatArrayPRec2;  var VArgPStatStatArrayPRec2: PStatStatArrayPRec2;


      // dyn arrays of named arrays
      ArgPDynDynTRec1Array: PDynDynTRec1Array;      var VArgPDynDynTRec1Array: PDynDynTRec1Array;
      ArgPDynDynPrec1Array: PDynDynPrec1Array;      var VArgPDynDynPrec1Array: PDynDynPrec1Array;
      ArgPDynStatTRec1Array: PDynStatTRec1Array;    var VArgPDynStatTRec1Array: PDynStatTRec1Array;
      ArgPDynStatPRec1Array: PDynStatPRec1Array;    var VArgPDynStatPRec1Array: PDynStatPRec1Array;
      ArgPDynPDynTRec1Array: PDynPDynTRec1Array;     var VArgPDynPDynTRec1Array: PDynPDynTRec1Array;
      ArgPDynPStatTRec1Array: PDynPStatTRec1Array;   var VArgPDynPStatTRec1Array: PDynPStatTRec1Array;
      ArgPDynPDynTRec1NPArray: PDynPDynTRec1NPArray;  var VArgPDynPDynTRec1NPArray: PDynPDynTRec1NPArray;
      ArgPDynPStatTRec1NPArray: PDynPStatTRec1NPArray;var VArgPDynPStatTRec1NPArray: PDynPStatTRec1NPArray;

      ArgPDynDynTRec2Array: PDynDynTRec2Array;      var VArgPDynDynTRec2Array: PDynDynTRec2Array;
      ArgPDynDynPrec2Array: PDynDynPrec2Array;      var VArgPDynDynPrec2Array: PDynDynPrec2Array;
      ArgPDynDynPPrec2Array: PDynDynPPrec2Array;    var VArgPDynDynPPrec2Array: PDynDynPPrec2Array;
      ArgPDynStatTRec2Array: PDynStatTRec2Array;    var VArgPDynStatTRec2Array: PDynStatTRec2Array;
      ArgPDynStatPRec2Array: PDynStatPRec2Array;    var VArgPDynStatPRec2Array: PDynStatPRec2Array;
      ArgPDynStatPPRec2Array: PDynStatPPRec2Array;  var VArgPDynStatPPRec2Array: PDynStatPPRec2Array;

      // stat arrays of named arrays
      ArgPStatDynTRec1Array: PStatDynTRec1Array;      var VArgPStatDynTRec1Array: PStatDynTRec1Array;
      ArgPStatDynPrec1Array: PStatDynPrec1Array;      var VArgPStatDynPrec1Array: PStatDynPrec1Array;
      ArgPStatStatTRec1Array: PStatStatTRec1Array;    var VArgPStatStatTRec1Array: PStatStatTRec1Array;
      ArgPStatStatPRec1Array: PStatStatPRec1Array;    var VArgPStatStatPRec1Array: PStatStatPRec1Array;
      ArgPStatPDynTRec1Array: PStatPDynTRec1Array;     var VArgPStatPDynTRec1Array: PStatPDynTRec1Array;
      ArgPStatPStatTRec1Array: PStatPStatTRec1Array;   var VArgPStatPStatTRec1Array: PStatPStatTRec1Array;

      ArgPStatDynTRec2Array: PStatDynTRec2Array;      var VArgPStatDynTRec2Array: PStatDynTRec2Array;
      ArgPStatDynPrec2Array: PStatDynPrec2Array;      var VArgPStatDynPrec2Array: PStatDynPrec2Array;
      ArgPStatDynPPrec2Array: PStatDynPPrec2Array;    var VArgPStatDynPPrec2Array: PStatDynPPrec2Array;
      ArgPStatStatTRec2Array: PStatStatTRec2Array;    var VArgPStatStatTRec2Array: PStatStatTRec2Array;
      ArgPStatStatPRec2Array: PStatStatPRec2Array;    var VArgPStatStatPRec2Array: PStatStatPRec2Array;
      ArgPStatStatPPRec2Array: PStatStatPPRec2Array;  var VArgPStatStatPPRec2Array: PStatStatPPRec2Array;

    {$ENDIF}
    {$IFDEF Global_Call_FooFunc}
    //FooFunc(
      // dyn arrays
      GlobTDynArrayTRec1,  GlobTDynArrayTRec1,
      GlobTDynArrayPRec1,  GlobTDynArrayPRec1,
      GlobTDynDynArrayTRec1,  GlobTDynDynArrayTRec1,
      GlobTDynDynArrayPRec1,  GlobTDynDynArrayPRec1,
      GlobTDynStatArrayTRec1,  GlobTDynStatArrayTRec1,
      GlobTDynStatArrayPRec1,  GlobTDynStatArrayPRec1,

      GlobTDynArrayTRec2,  GlobTDynArrayTRec2,
      GlobTDynArrayPRec2,  GlobTDynArrayPRec2,
      GlobTDynArrayPPRec2,  GlobTDynArrayPPRec2,
      GlobTDynDynArrayTRec2,  GlobTDynDynArrayTRec2,
      GlobTDynDynArrayPRec2,  GlobTDynDynArrayPRec2,
      GlobTDynStatArrayTRec2,  GlobTDynStatArrayTRec2,
      GlobTDynStatArrayPRec2,  GlobTDynStatArrayPRec2,


      // stat arrays
      GlobTStatArrayTRec1,  GlobTStatArrayTRec1,
      GlobTStatArrayPRec1,  GlobTStatArrayPRec1,
      GlobTStatDynArrayTRec1,  GlobTStatDynArrayTRec1,
      GlobTStatDynArrayPRec1,  GlobTStatDynArrayPRec1,
      GlobTStatStatArrayTRec1,  GlobTStatStatArrayTRec1,
      GlobTStatStatArrayPRec1,  GlobTStatStatArrayPRec1,

      GlobTStatArrayTRec2,  GlobTStatArrayTRec2,
      GlobTStatArrayPRec2,  GlobTStatArrayPRec2,
      GlobTStatArrayPPRec2,  GlobTStatArrayPPRec2,
      GlobTStatDynArrayTRec2,  GlobTStatDynArrayTRec2,
      GlobTStatDynArrayPRec2,  GlobTStatDynArrayPRec2,
      GlobTStatStatArrayTRec2,  GlobTStatStatArrayTRec2,
      GlobTStatStatArrayPRec2,  GlobTStatStatArrayPRec2,


      // dyn arrays of named arrays
      GlobTDynDynTRec1Array,  GlobTDynDynTRec1Array,
      GlobTDynDynPrec1Array,  GlobTDynDynPrec1Array,
      GlobTDynStatTRec1Array,  GlobTDynStatTRec1Array,
      GlobTDynStatPRec1Array,  GlobTDynStatPRec1Array,
      GlobTDynPDynTRec1Array,  GlobTDynPDynTRec1Array,
      GlobTDynPStatTRec1Array,  GlobTDynPStatTRec1Array,
      GlobTDynPDynTRec1NPArray, GlobTDynPDynTRec1NPArray,
      GlobTDynPStatTRec1NPArray, GlobTDynPStatTRec1NPArray,

      GlobTDynDynTRec2Array,  GlobTDynDynTRec2Array,
      GlobTDynDynPrec2Array,  GlobTDynDynPrec2Array,
      GlobTDynDynPPrec2Array,  GlobTDynDynPPrec2Array,
      GlobTDynStatTRec2Array,  GlobTDynStatTRec2Array,
      GlobTDynStatPRec2Array,  GlobTDynStatPRec2Array,
      GlobTDynStatPPRec2Array,  GlobTDynStatPPRec2Array,

      // stat arrays of named arrays
      GlobTStatDynTRec1Array,  GlobTStatDynTRec1Array,
      GlobTStatDynPrec1Array,  GlobTStatDynPrec1Array,
      GlobTStatStatTRec1Array,  GlobTStatStatTRec1Array,
      GlobTStatStatPRec1Array,  GlobTStatStatPRec1Array,
      GlobTStatPDynTRec1Array,  GlobTStatPDynTRec1Array,
      GlobTStatPStatTRec1Array,  GlobTStatPStatTRec1Array,

      GlobTStatDynTRec2Array,  GlobTStatDynTRec2Array,
      GlobTStatDynPrec2Array,  GlobTStatDynPrec2Array,
      GlobTStatDynPPrec2Array,  GlobTStatDynPPrec2Array,
      GlobTStatStatTRec2Array,  GlobTStatStatTRec2Array,
      GlobTStatStatPRec2Array,  GlobTStatStatPRec2Array,
      GlobTStatStatPPRec2Array,  GlobTStatStatPPRec2Array,


      // POINTER

      // dyn arrays
      GlobPDynArrayTRec1,  GlobPDynArrayTRec1,
      GlobPDynArrayPRec1,  GlobPDynArrayPRec1,
      GlobPDynDynArrayTRec1,  GlobPDynDynArrayTRec1,
      GlobPDynDynArrayPRec1,  GlobPDynDynArrayPRec1,
      GlobPDynStatArrayTRec1,  GlobPDynStatArrayTRec1,
      GlobPDynStatArrayPRec1,  GlobPDynStatArrayPRec1,

      GlobPDynArrayTRec2,  GlobPDynArrayTRec2,
      GlobPDynArrayPRec2,  GlobPDynArrayPRec2,
      GlobPDynArrayPPRec2,  GlobPDynArrayPPRec2,
      GlobPDynDynArrayTRec2,  GlobPDynDynArrayTRec2,
      GlobPDynDynArrayPRec2,  GlobPDynDynArrayPRec2,
      GlobPDynStatArrayTRec2,  GlobPDynStatArrayTRec2,
      GlobPDynStatArrayPRec2,  GlobPDynStatArrayPRec2,


      // stat arrays
      GlobPStatArrayTRec1,  GlobPStatArrayTRec1,
      GlobPStatArrayPRec1,  GlobPStatArrayPRec1,
      GlobPStatDynArrayTRec1,  GlobPStatDynArrayTRec1,
      GlobPStatDynArrayPRec1,  GlobPStatDynArrayPRec1,
      GlobPStatStatArrayTRec1,  GlobPStatStatArrayTRec1,
      GlobPStatStatArrayPRec1,  GlobPStatStatArrayPRec1,

      GlobPStatArrayTRec2,  GlobPStatArrayTRec2,
      GlobPStatArrayPRec2,  GlobPStatArrayPRec2,
      GlobPStatArrayPPRec2,  GlobPStatArrayPPRec2,
      GlobPStatDynArrayTRec2,  GlobPStatDynArrayTRec2,
      GlobPStatDynArrayPRec2,  GlobPStatDynArrayPRec2,
      GlobPStatStatArrayTRec2,  GlobPStatStatArrayTRec2,
      GlobPStatStatArrayPRec2,  GlobPStatStatArrayPRec2,

      // dyn arrays of named arrays
      GlobPDynDynTRec1Array,  GlobPDynDynTRec1Array,
      GlobPDynDynPrec1Array,  GlobPDynDynPrec1Array,
      GlobPDynStatTRec1Array,  GlobPDynStatTRec1Array,
      GlobPDynStatPRec1Array,  GlobPDynStatPRec1Array,
      GlobPDynPDynTRec1Array,  GlobPDynPDynTRec1Array,
      GlobPDynPStatTRec1Array,  GlobPDynPStatTRec1Array,
      GlobPDynPDynTRec1NPArray, GlobPDynPDynTRec1NPArray,
      GlobPDynPStatTRec1NPArray, GlobPDynPStatTRec1NPArray,

      GlobPDynDynTRec2Array,  GlobPDynDynTRec2Array,
      GlobPDynDynPrec2Array,  GlobPDynDynPrec2Array,
      GlobPDynDynPPrec2Array,  GlobPDynDynPPrec2Array,
      GlobPDynStatTRec2Array,  GlobPDynStatTRec2Array,
      GlobPDynStatPRec2Array,  GlobPDynStatPRec2Array,
      GlobPDynStatPPRec2Array,  GlobPDynStatPPRec2Array,

      // stat arrays of named arrays
      GlobPStatDynTRec1Array,  GlobPStatDynTRec1Array,
      GlobPStatDynPrec1Array,  GlobPStatDynPrec1Array,
      GlobPStatStatTRec1Array,  GlobPStatStatTRec1Array,
      GlobPStatStatPRec1Array,  GlobPStatStatPRec1Array,
      GlobPStatPDynTRec1Array,  GlobPStatPDynTRec1Array,
      GlobPStatPStatTRec1Array,  GlobPStatPStatTRec1Array,

      GlobPStatDynTRec2Array,  GlobPStatDynTRec2Array,
      GlobPStatDynPrec2Array,  GlobPStatDynPrec2Array,
      GlobPStatDynPPrec2Array,  GlobPStatDynPPrec2Array,
      GlobPStatStatTRec2Array,  GlobPStatStatTRec2Array,
      GlobPStatStatPRec2Array,  GlobPStatStatPRec2Array,
      GlobPStatStatPPRec2Array,  GlobPStatStatPPRec2Array,

    {$ENDIF}

    {$IFDEF FooFunc_Local}
    var
      VarArrayHelperI: Integer;

      VarDynIntArray: TDynIntArray;
      VarDynIntArrayP: ^TDynIntArray;
      VarStatIntArray: TStatIntArray;
      VarPDynIntArray: PDynIntArray;
      VarPStatIntArray: PStatIntArray;
      VarDynIntArrayA: Array of Integer;
      VarStatIntArrayA: Array [5..9] of Integer;

      VarDynObjArray: TDynObjArray;
      VarStatObjArray: TStatObjArray;
      VarPDynObjArray: PDynObjArray;
      VarPStatObjArray: PStatObjArray;
      VarDynObjArrayA: Array of TObjectInArray;
      VarStatObjArrayA: Array [5..9] of TObjectInArray;

      VarDynRecArray: TDynRecArray;
      VarStatRecArray: TStatRecArray;
      VarPDynRecArray: PDynRecArray;
      VarPStatRecArray: PStatRecArray;
      VarDynRecArrayA: Array of TRecordInArray;
      VarStatRecArrayA: Array [5..9] of TRecordInArray;

      VarDynIntArray2: TDynIntArray2;

      VarDynIntArray2A: Array of TDynIntArray;
      VarStatIntArray2A: Array [5..9] of TDynIntArray;
      VarDynIntArray2P: Array of PDynIntArray;
      VarStatIntArray2P: Array [5..9] of PDynIntArray;

    {$ENDIF}

    {$IFDEF Global_Var}
    //var
  // dyn array with record
    myRec2 : PRecForArray2;

      // target for pointer
      GlobTDynArrayTRec1NP, GlobTDynArrayTRec1NP2: TDynArrayTRec1NP;
      GlobTStatArrayTRec1NP, GlobTStatArrayTRec1NP2: TStatArrayTRec1NP;

      // dyn arrays
      GlobTDynArrayTRec1: TDynArrayTRec1;
      GlobTDynArrayPRec1: TDynArrayPRec1;
      GlobTDynDynArrayTRec1: TDynDynArrayTRec1;
      GlobTDynDynArrayPRec1: TDynDynArrayPRec1;
      GlobTDynStatArrayTRec1: TDynStatArrayTRec1;
      GlobTDynStatArrayPRec1: TDynStatArrayPRec1;

      GlobTDynArrayTRec2: TDynArrayTRec2;
      GlobTDynArrayPRec2: TDynArrayPRec2;
      GlobTDynArrayPPRec2: TDynArrayPPRec2;
      GlobTDynDynArrayTRec2: TDynDynArrayTRec2;
      GlobTDynDynArrayPRec2: TDynDynArrayPRec2;
      GlobTDynStatArrayTRec2: TDynStatArrayTRec2;
      GlobTDynStatArrayPRec2: TDynStatArrayPRec2;


      // stat arrays
      GlobTStatArrayTRec1: TStatArrayTRec1;
      GlobTStatArrayPRec1: TStatArrayPRec1;
      GlobTStatDynArrayTRec1: TStatDynArrayTRec1;
      GlobTStatDynArrayPRec1: TStatDynArrayPRec1;
      GlobTStatStatArrayTRec1: TStatStatArrayTRec1;
      GlobTStatStatArrayPRec1: TStatStatArrayPRec1;

      GlobTStatArrayTRec2: TStatArrayTRec2;
      GlobTStatArrayPRec2: TStatArrayPRec2;
      GlobTStatArrayPPRec2: TStatArrayPPRec2;
      GlobTStatDynArrayTRec2: TStatDynArrayTRec2;
      GlobTStatDynArrayPRec2: TStatDynArrayPRec2;
      GlobTStatStatArrayTRec2: TStatStatArrayTRec2;
      GlobTStatStatArrayPRec2: TStatStatArrayPRec2;

      // dyn arrays of named arrays
      GlobTDynDynTRec1Array: TDynDynTRec1Array;
      GlobTDynDynPrec1Array: TDynDynPrec1Array;
      GlobTDynStatTRec1Array: TDynStatTRec1Array;
      GlobTDynStatPRec1Array: TDynStatPRec1Array;
      GlobTDynPDynTRec1Array: TDynPDynTRec1Array;
      GlobTDynPStatTRec1Array: TDynPStatTRec1Array;
      GlobTDynPDynTRec1NPArray: TDynPDynTRec1NPArray;
      GlobTDynPStatTRec1NPArray: TDynPStatTRec1NPArray;

      GlobTDynDynTRec2Array: TDynDynTRec2Array;
      GlobTDynDynPrec2Array: TDynDynPrec2Array;
      GlobTDynDynPPrec2Array: TDynDynPPrec2Array;
      GlobTDynStatTRec2Array: TDynStatTRec2Array;
      GlobTDynStatPRec2Array: TDynStatPRec2Array;
      GlobTDynStatPPRec2Array: TDynStatPPRec2Array;

      // stat arrays of named arrays
      GlobTStatDynTRec1Array: TStatDynTRec1Array;
      GlobTStatDynPrec1Array: TStatDynPrec1Array;
      GlobTStatStatTRec1Array: TStatStatTRec1Array;
      GlobTStatStatPRec1Array: TStatStatPRec1Array;
      GlobTStatPDynTRec1Array: TStatPDynTRec1Array;
      GlobTStatPStatTRec1Array: TStatPStatTRec1Array;

      GlobTStatDynTRec2Array: TStatDynTRec2Array;
      GlobTStatDynPrec2Array: TStatDynPrec2Array;
      GlobTStatDynPPrec2Array: TStatDynPPrec2Array;
      GlobTStatStatTRec2Array: TStatStatTRec2Array;
      GlobTStatStatPRec2Array: TStatStatPRec2Array;
      GlobTStatStatPPRec2Array: TStatStatPPRec2Array;


      GlobTEnumArrayTRec1:     TEnumArrayTRec1;      // = array [TEnunForArray] of TRecForArray3;
      GlobTSubEnumArrayTRec1:  TSubEnumArrayTRec1;   //  = array [eaTwo..eaThree] of TRecForArray3;

      GlobTStatDualArrayTRec2: TStatDualArrayTRec2;  // = array [3..5, 3..5] of TRecForArray2;

// POINTER

      // dyn arrays
      GlobPDynArrayTRec1: PDynArrayTRec1;
      GlobPDynArrayPRec1: PDynArrayPRec1;
      GlobPDynDynArrayTRec1: PDynDynArrayTRec1;
      GlobPDynDynArrayPRec1: PDynDynArrayPRec1;
      GlobPDynStatArrayTRec1: PDynStatArrayTRec1;
      GlobPDynStatArrayPRec1: PDynStatArrayPRec1;

      GlobPDynArrayTRec2: PDynArrayTRec2;
      GlobPDynArrayPRec2: PDynArrayPRec2;
      GlobPDynArrayPPRec2: PDynArrayPPRec2;
      GlobPDynDynArrayTRec2: PDynDynArrayTRec2;
      GlobPDynDynArrayPRec2: PDynDynArrayPRec2;
      GlobPDynStatArrayTRec2: PDynStatArrayTRec2;
      GlobPDynStatArrayPRec2: PDynStatArrayPRec2;


      // stat arrays
      GlobPStatArrayTRec1: PStatArrayTRec1;
      GlobPStatArrayPRec1: PStatArrayPRec1;
      GlobPStatDynArrayTRec1: PStatDynArrayTRec1;
      GlobPStatDynArrayPRec1: PStatDynArrayPRec1;
      GlobPStatStatArrayTRec1: PStatStatArrayTRec1;
      GlobPStatStatArrayPRec1: PStatStatArrayPRec1;

      GlobPStatArrayTRec2: PStatArrayTRec2;
      GlobPStatArrayPRec2: PStatArrayPRec2;
      GlobPStatArrayPPRec2: PStatArrayPPRec2;
      GlobPStatDynArrayTRec2: PStatDynArrayTRec2;
      GlobPStatDynArrayPRec2: PStatDynArrayPRec2;
      GlobPStatStatArrayTRec2: PStatStatArrayTRec2;
      GlobPStatStatArrayPRec2: PStatStatArrayPRec2;

      // dyn arrays of named arrays
      GlobPDynDynTRec1Array: PDynDynTRec1Array;
      GlobPDynDynPrec1Array: PDynDynPrec1Array;
      GlobPDynStatTRec1Array: PDynStatTRec1Array;
      GlobPDynStatPRec1Array: PDynStatPRec1Array;
      GlobPDynPDynTRec1Array: PDynPDynTRec1Array;
      GlobPDynPStatTRec1Array: PDynPStatTRec1Array;
      GlobPDynPDynTRec1NPArray: PDynPDynTRec1NPArray;
      GlobPDynPStatTRec1NPArray: PDynPStatTRec1NPArray;

      GlobPDynDynTRec2Array: PDynDynTRec2Array;
      GlobPDynDynPrec2Array: PDynDynPrec2Array;
      GlobPDynDynPPrec2Array: PDynDynPPrec2Array;
      GlobPDynStatTRec2Array: PDynStatTRec2Array;
      GlobPDynStatPRec2Array: PDynStatPRec2Array;
      GlobPDynStatPPRec2Array: PDynStatPPRec2Array;

      // dyn arrays of named arrays
      GlobPStatDynTRec1Array: PStatDynTRec1Array;
      GlobPStatDynPrec1Array: PStatDynPrec1Array;
      GlobPStatStatTRec1Array: PStatStatTRec1Array;
      GlobPStatStatPRec1Array: PStatStatPRec1Array;
      GlobPStatPDynTRec1Array: PStatPDynTRec1Array;
      GlobPStatPStatTRec1Array: PStatPStatTRec1Array;

      GlobPStatDynTRec2Array: PStatDynTRec2Array;
      GlobPStatDynPrec2Array: PStatDynPrec2Array;
      GlobPStatDynPPrec2Array: PStatDynPPrec2Array;
      GlobPStatStatTRec2Array: PStatStatTRec2Array;
      GlobPStatStatPRec2Array: PStatStatPRec2Array;
      GlobPStatStatPPRec2Array: PStatStatPPRec2Array;

      GlobPEnumArrayTRec1:     PEnumArrayTRec1;      // = ^TEnumArrayTRec1;
      GlobPSubEnumArrayTRec1:  PSubEnumArrayTRec1;   // = ^TSubEnumArrayTRec1;

// UN-NAMED types
      // dyn arrays
      GlobADynArrayTRec1      : array of TRecForArray3;
      GlobADynArrayPRec1      : array of ^TRecForArray3;
      GlobADynDynArrayTRec1   : array of array of TRecForArray1;
      GlobADynDynArrayPRec1   : array of array of ^TRecForArray1;
      GlobADynStatArrayTRec1  : array of array [3..5] of TRecForArray1;
      GlobADynStatArrayPRec1  : array of array [3..5] of ^TRecForArray1;

      GlobADynArrayTRec2      : array of TRecForArray4;
      GlobADynArrayPRec2      : array of ^TRecForArray4;
      GlobADynArrayPPRec2     : array of ^PRecForArray4; // double pointer
      GlobADynDynArrayTRec2   : array of array of TRecForArray2;
      GlobADynDynArrayPRec2   : array of array of ^TRecForArray2;
      GlobADynStatArrayTRec2  : array of array [3..5] of TRecForArray2;
      GlobADynStatArrayPRec2  : array of array [3..5] of ^TRecForArray2;


      // stat arrays
      GlobAStatArrayTRec1     : array [3..5] of TRecForArray3;
      GlobAStatArrayPRec1     : array [3..5] of ^TRecForArray3;
      GlobAStatDynArrayTRec1  : array [3..5] of array of TRecForArray1;
      GlobAStatDynArrayPRec1  : array [3..5] of array of ^TRecForArray1;
      GlobAStatStatArrayTRec1 : array [3..5] of array [3..5] of TRecForArray1;
      GlobAStatStatArrayPRec1 : array [3..5] of array [3..5] of ^TRecForArray1;

      GlobAStatArrayTRec2     : array [3..5] of TRecForArray4;
      GlobAStatArrayPRec2     : array [3..5] of ^TRecForArray4;
      GlobAStatArrayPPRec2    : array [3..5] of ^PRecForArray4; // double pointer
      GlobAStatDynArrayTRec2  : array [3..5] of array of TRecForArray2;
      GlobAStatDynArrayPRec2  : array [3..5] of array of ^TRecForArray2;
      GlobAStatStatArrayTRec2 : array [3..5] of array [3..5] of TRecForArray2;
      GlobAStatStatArrayPRec2 : array [3..5] of array [3..5] of ^TRecForArray2;


      // dyn arrays of named arrays
      GlobADynDynTRec1Array   : array of TDynArrayTRec1;
      GlobADynDynPrec1Array   : array of TDynArrayPRec1;
      GlobADynStatTRec1Array  : array of TStatArrayTRec1;
      GlobADynStatPRec1Array  : array of TStatArrayPRec1;
      GlobADynPDynTRec1Array   : array of ^TDynArrayTRec1;
      GlobADynPStatTRec1Array  : array of ^TStatArrayTRec1;

      GlobADynDynTRec2Array   : array of TDynArrayTRec2;
      GlobADynDynPrec2Array   : array of TDynArrayPRec2;
      GlobADynDynPPrec2Array  : array of TDynArrayPPRec2; // double pointer
      GlobADynStatTRec2Array  : array of TStatArrayTRec2;
      GlobADynStatPRec2Array  : array of TStatArrayPRec2;
      GlobADynStatPPRec2Array : array of TStatArrayPPRec2; // double pointer

      // stat arrays of named arrays
      GlobAStatDynTRec1Array   : array of TDynArrayTRec1;
      GlobAStatDynPrec1Array   : array of TDynArrayPRec1;
      GlobAStatStatTRec1Array  : array of TStatArrayTRec1;
      GlobAStatStatPRec1Array  : array of TStatArrayPRec1;
      GlobAStatPDynTRec1Array   : array of ^TDynArrayTRec1;
      GlobAStatPStatTRec1Array  : array of ^TStatArrayTRec1;

      GlobAStatDynTRec2Array   : array of TDynArrayTRec2;
      GlobAStatDynPrec2Array   : array of TDynArrayPRec2;
      GlobAStatDynPPrec2Array  : array of TDynArrayPPRec2; // double pointer
      GlobAStatStatTRec2Array  : array of TStatArrayTRec2;
      GlobAStatStatPRec2Array  : array of TStatArrayPRec2;
      GlobAStatStatPPRec2Array : array of TStatArrayPPRec2; // double pointer

      GlobADynDynDynArrayTRec1      : array of array of array of TRecForArray1;
      GlobADynDynDynDynArrayTRec1   : array of array of array of array of TRecForArray1;
      GlobADynArrayTRec5            : array of record a: byte; c:integer; end;
      GlobAStatArrayTRec5           : array [3..5] of record a: byte; c:integer; end;

      GlobAEnumArrayTRec1:     array [TEnunForArray] of TRecForArray3;
      GlobASubEnumArrayTRec1:  array [eaTwo..eaThree] of TRecForArray3;

      GlobAStatDualArrayTRec2: array [3..5, 3..5] of TRecForArray2;

      // TODO
      GlobAStatDynDynArrayTRec2  : array [3..5] of array of array of TRecForArray2;
      GlobADynDynStatArrayTRec2  : array of array of array [3..5] of TRecForArray2;


    {$ENDIF}
  {%endregion}

  {%region CODE (initilization)}
    {$IFDEF FooFunc_Body}
    //begin
      SetLength(VarDynIntArray,2);
      SetLength(VarDynIntArrayA,2);
      VarPDynIntArray := @VarDynIntArray;
      VarPStatIntArray := @VarStatIntArray;
      VarDynIntArrayP := @VarDynIntArray;
      for VarArrayHelperI := low(VarDynIntArray) to high (VarDynIntArray) do
        VarDynIntArray[VarArrayHelperI] := 2 * VarArrayHelperI;
      for VarArrayHelperI := low(VarStatIntArray) to high (VarStatIntArray) do
        VarStatIntArray[VarArrayHelperI] := 2 * VarArrayHelperI;
      for VarArrayHelperI := low(VarDynIntArrayA) to high (VarDynIntArrayA) do
        VarDynIntArrayA[VarArrayHelperI] := 2 * VarArrayHelperI;
      for VarArrayHelperI := low(VarStatIntArrayA) to high (VarStatIntArrayA) do
        VarStatIntArrayA[VarArrayHelperI] := 2 * VarArrayHelperI;

      SetLength(VarDynObjArray,2);
      SetLength(VarDynObjArrayA,2);
      VarPDynObjArray := @VarDynObjArray;
      VarPStatObjArray := @VarStatObjArray;
      for VarArrayHelperI := low(VarDynObjArray) to high (VarDynObjArray) do begin
        VarDynObjArray[VarArrayHelperI] := TObjectInArray.Create;
        VarDynObjArray[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      end;
      for VarArrayHelperI := low(VarStatObjArray) to high (VarStatObjArray) do begin
        VarStatObjArray[VarArrayHelperI] := TObjectInArray.Create;
        VarStatObjArray[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      end;
      for VarArrayHelperI := low(VarDynObjArrayA) to high (VarDynObjArrayA) do begin
        VarDynObjArrayA[VarArrayHelperI] := TObjectInArray.Create;
        VarDynObjArrayA[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      end;
      for VarArrayHelperI := low(VarStatObjArrayA) to high (VarStatObjArrayA) do begin
        VarStatObjArrayA[VarArrayHelperI] := TObjectInArray.Create;
        VarStatObjArrayA[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      end;

      SetLength(VarDynObjArray,2);
      SetLength(VarDynObjArrayA,2);
      VarPDynObjArray := @VarDynObjArray;
      VarPStatObjArray := @VarStatObjArray;
      for VarArrayHelperI := low(VarDynObjArray) to high (VarDynObjArray) do
        VarDynObjArray[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      for VarArrayHelperI := low(VarStatObjArray) to high (VarStatObjArray) do
        VarStatObjArray[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      for VarArrayHelperI := low(VarDynObjArrayA) to high (VarDynObjArrayA) do
        VarDynObjArrayA[VarArrayHelperI].Foo := 2 * VarArrayHelperI;
      for VarArrayHelperI := low(VarStatObjArrayA) to high (VarStatObjArrayA) do
        VarStatObjArrayA[VarArrayHelperI].Foo := 2 * VarArrayHelperI;

      SetLength(VarDynIntArray2, 2);
      SetLength(VarDynIntArray2[0], 3);

      SetLength(VarDynIntArray2A, 2);
      SetLength(VarDynIntArray2A[0], 3);
      SetLength(VarStatIntArray2A[5], 3);

      SetLength(VarDynIntArray2p, 2);
      VarDynIntArray2p[0] := @VarDynIntArray;
      VarStatIntArray2P[5] := @VarDynIntArray;
    {$ENDIF}

    {$IFDEF Global_Body}
    //begin
      new(myRec2);
      myRec2^.c := 16;
      SetLength(myRec2^.recs, 16);
      myRec2^.recs[0].a := 10;
      myRec2^.recs[0].b := 20;
      myRec2^.recs[1].a := 11;
      myRec2^.recs[1].b := 21;


    // target for pointer
    //GlobTDynArrayTRec1NP, GlobTDynArrayTRec1NP2: TDynArrayTRec1NP;
    SetLength(GlobTDynArrayTRec1NP, 3);
    GlobTDynArrayTRec1NP[0].a := 500;
    GlobTDynArrayTRec1NP[1].a := 501;
    SetLength(GlobTDynArrayTRec1NP2, 3);
    GlobTDynArrayTRec1NP2[0].a := 505;
    GlobTDynArrayTRec1NP2[1].a := 506;
    //GlobTStatArrayTRec1NP, GlobTStatArrayTRec1NP2: TStatArrayTRec1NP;
    GlobTStatArrayTRec1NP[3].a := 510;
    GlobTStatArrayTRec1NP[4].a := 511;
    GlobTStatArrayTRec1NP2[3].a := 515;
    GlobTStatArrayTRec1NP2[4].a := 516;


  // dyn arrays
      //GlobTDynArrayTRec1: TDynArrayTRec1;
      SetLength(GlobTDynArrayTRec1, 3);
      globtdynarraytrec1[0].a := 90;            globtdynarraytrec1[0].b := 243;
      globtdynarraytrec1[1].a := 91;            globtdynarraytrec1[1].b := 243;
      //GlobTDynArrayPRec1: TDynArrayPRec1;
      SetLength(GlobTDynArrayPRec1, 3);
      GlobTDynArrayPRec1[0] := @GlobTDynArrayTRec1[0];
      GlobTDynArrayPRec1[1] := @GlobTDynArrayTRec1[1];
      //GlobTDynDynArrayTRec1: TDynDynArrayTRec1;
      SetLength(GlobTDynDynArrayTRec1, 3);
      SetLength(GlobTDynDynArrayTRec1[0], 3);
      globtdyndynarraytrec1[0][0].a := 80;            globtdyndynarraytrec1[0][0].b := 243;
      globtdyndynarraytrec1[0][1].a := 81;            globtdyndynarraytrec1[0][1].b := 243;
      SetLength(GlobTDynDynArrayTRec1[1], 3);
      globtdyndynarraytrec1[1][0].a := 85;            globtdyndynarraytrec1[1][0].b := 243;
      globtdyndynarraytrec1[1][1].a := 86;            globtdyndynarraytrec1[1][1].b := 243;
      //GlobTDynDynArrayPRec1: TDynDynArrayPRec1;
      SetLength(GlobTDynDynArrayPRec1, 3);
      SetLength(GlobTDynDynArrayPRec1[0], 3);
      GlobTDynDynArrayPRec1[0][0] := @GlobTDynDynArrayTRec1[0][0];
      GlobTDynDynArrayPRec1[0][1] := @GlobTDynDynArrayTRec1[0][1];
      SetLength(GlobTDynDynArrayPRec1[1], 3);
      GlobTDynDynArrayPRec1[1][0] := @GlobTDynDynArrayTRec1[1][0];
      GlobTDynDynArrayPRec1[1][1] := @GlobTDynDynArrayTRec1[1][1];
      //GlobTDynStatArrayTRec1: TDynStatArrayTRec1;
      SetLength(GlobTDynStatArrayTRec1, 3);
      globtdynstatarraytrec1[0][3].a := 70;            globtdynstatarraytrec1[0][3].b := 243;
      globtdynstatarraytrec1[0][4].a := 71;            globtdynstatarraytrec1[0][4].b := 243;
      globtdynstatarraytrec1[1][3].a := 75;            globtdynstatarraytrec1[1][3].b := 243;
      globtdynstatarraytrec1[1][4].a := 76;            globtdynstatarraytrec1[1][4].b := 243;
      //GlobTDynStatArrayPRec1: TDynStatArrayPRec1;
      SetLength(GlobTDynStatArrayPRec1, 3);
      GlobTDynStatArrayPRec1[0][3] := @GlobTDynStatArrayTRec1[0][3];
      GlobTDynStatArrayPRec1[0][4] := @GlobTDynStatArrayTRec1[0][4];
      GlobTDynStatArrayPRec1[1][3] := @GlobTDynStatArrayTRec1[1][3];
      GlobTDynStatArrayPRec1[1][4] := @GlobTDynStatArrayTRec1[1][4];

      //GlobTDynArrayTRec2: TDynArrayTRec2;
      SetLength(GlobTDynArrayTRec2, 3);
      globtdynarraytrec2[0].c := 90;            globtdynarraytrec2[0].recs := nil;
      globtdynarraytrec2[1].c := 91;            globtdynarraytrec2[1].recs := nil;
      //GlobTDynArrayPRec2: TDynArrayPRec2;
      SetLength(GlobTDynArrayPRec2, 3);
      GlobTDynArrayPRec2[0] := @GlobTDynArrayTRec2[0];
      GlobTDynArrayPRec2[1] := @GlobTDynArrayTRec2[1];
      //GlobTDynDynArrayTRec2: TDynDynArrayTRec2;
      SetLength(GlobTDynDynArrayTRec2, 3);
      SetLength(GlobTDynDynArrayTRec2[0], 3);
      globtdyndynarraytrec2[0][0].c := 80;            globtdyndynarraytrec2[0][0].recs := nil;
      globtdyndynarraytrec2[0][1].c := 81;            globtdyndynarraytrec2[0][1].recs := nil;
      SetLength(GlobTDynDynArrayTRec2[1], 3);
      globtdyndynarraytrec2[1][0].c := 85;            globtdyndynarraytrec2[1][0].recs := nil;
      globtdyndynarraytrec2[1][1].c := 86;            globtdyndynarraytrec2[1][1].recs := nil;
      //GlobTDynDynArrayPRec2: TDynDynArrayPRec2;
      SetLength(GlobTDynDynArrayPRec2, 3);
      SetLength(GlobTDynDynArrayPRec2[0], 3);
      GlobTDynDynArrayPRec2[0][0] := @GlobTDynDynArrayTRec2[0][0];
      GlobTDynDynArrayPRec2[0][1] := @GlobTDynDynArrayTRec2[0][1];
      SetLength(GlobTDynDynArrayPRec2[1], 3);
      GlobTDynDynArrayPRec2[1][0] := @GlobTDynDynArrayTRec2[1][0];
      GlobTDynDynArrayPRec2[1][1] := @GlobTDynDynArrayTRec2[1][1];
      //GlobTDynStatArrayTRec2: TDynStatArrayTRec2;
      SetLength(GlobTDynStatArrayTRec2, 3);
      globtdynstatarraytrec2[0][3].c := 70;            globtdynstatarraytrec2[0][3].recs := nil;
      globtdynstatarraytrec2[0][4].c := 71;            globtdynstatarraytrec2[0][4].recs := nil;
      globtdynstatarraytrec2[1][3].c := 75;            globtdynstatarraytrec2[1][3].recs := nil;
      globtdynstatarraytrec2[1][4].c := 76;            globtdynstatarraytrec2[1][4].recs := nil;
      //GlobTDynStatArrayPRec2: TDynStatArrayPRec2;
      SetLength(GlobTDynStatArrayPRec2, 3);
      GlobTDynStatArrayPRec2[0][3] := @GlobTDynStatArrayTRec2[0][3];
      GlobTDynStatArrayPRec2[0][4] := @GlobTDynStatArrayTRec2[0][4];
      GlobTDynStatArrayPRec2[1][3] := @GlobTDynStatArrayTRec2[1][3];
      GlobTDynStatArrayPRec2[1][4] := @GlobTDynStatArrayTRec2[1][4];


  // stat arrays
      //GlobTStatArrayTRec1: TStatArrayTRec1;
      globtstatarraytrec1[3].a := 50;            globtstatarraytrec1[3].b := 243;
      globtstatarraytrec1[4].a := 51;            globtstatarraytrec1[4].b := 243;
      //GlobTStatArrayPRec1: TStatArrayPRec1;
      GlobTStatArrayPRec1[3] := @GlobTStatArrayTRec1[3];
      GlobTStatArrayPRec1[4] := @GlobTStatArrayTRec1[4];
      //GlobTStatDynArrayTRec1: TStatDynArrayTRec1;
      SetLength(GlobTStatDynArrayTRec1[3], 3);
      globtstatdynarraytrec1[3][0].a := 40;            globtstatdynarraytrec1[3][0].b := 243;
      globtstatdynarraytrec1[3][1].a := 41;            globtstatdynarraytrec1[3][1].b := 243;
      SetLength(GlobTStatDynArrayTRec1[4], 3);
      globtstatdynarraytrec1[4][0].a := 45;            globtstatdynarraytrec1[4][0].b := 243;
      globtstatdynarraytrec1[4][1].a := 46;            globtstatdynarraytrec1[4][1].b := 243;
      //GlobTStatDynArrayPRec1: TStatDynArrayPRec1;
      SetLength(GlobTStatDynArrayPRec1[3], 3);
      GlobTStatDynArrayPRec1[3][0] := @GlobTDynDynArrayTRec1[0][0];
      GlobTStatDynArrayPRec1[3][1] := @GlobTDynDynArrayTRec1[0][1];
      SetLength(GlobTStatDynArrayPRec1[4], 3);
      GlobTStatDynArrayPRec1[4][0] := @GlobTDynDynArrayTRec1[1][0];
      GlobTStatDynArrayPRec1[4][1] := @GlobTDynDynArrayTRec1[1][1];
      //GlobTStatStatArrayTRec1: TStatStatArrayTRec1;
      globtstatstatarraytrec1[3][3].a := 30;            globtstatstatarraytrec1[3][3].b := 243;
      globtstatstatarraytrec1[3][4].a := 31;            globtstatstatarraytrec1[3][4].b := 243;
      globtstatstatarraytrec1[4][3].a := 35;            globtstatstatarraytrec1[4][3].b := 243;
      globtstatstatarraytrec1[4][4].a := 36;            globtstatstatarraytrec1[4][4].b := 243;
      //GlobTStatStatArrayPRec1: TStatStatArrayPRec1;
      GlobTStatStatArrayPRec1[3][3] := @GlobTStatStatArrayTRec1[3][3];
      GlobTStatStatArrayPRec1[3][4] := @GlobTStatStatArrayTRec1[3][4];
      GlobTStatStatArrayPRec1[4][3] := @GlobTStatStatArrayTRec1[4][3];
      GlobTStatStatArrayPRec1[4][4] := @GlobTStatStatArrayTRec1[4][4];

      //GlobTStatArrayTRec2: TStatArrayTRec2;
      globtstatarraytrec2[3].c := 50;            globtstatarraytrec2[3].recs := nil;
      globtstatarraytrec2[4].c := 51;            globtstatarraytrec2[4].recs := nil;
      //GlobTStatArrayPRec2: TStatArrayPRec2;
      GlobTStatArrayPRec2[3] := @GlobTStatArrayTRec2[3];
      GlobTStatArrayPRec2[4] := @GlobTStatArrayTRec2[4];
      //GlobTStatDynArrayTRec2: TStatDynArrayTRec2;
      SetLength(GlobTStatDynArrayTRec2[3], 3);
      globtstatdynarraytrec2[3][0].c := 40;            globtstatdynarraytrec2[3][0].recs := nil;
      globtstatdynarraytrec2[3][1].c := 41;            globtstatdynarraytrec2[3][1].recs := nil;
      SetLength(GlobTStatDynArrayTRec2[4], 3);
      globtstatdynarraytrec2[4][0].c := 45;            globtstatdynarraytrec2[4][0].recs := nil;
      globtstatdynarraytrec2[4][1].c := 46;            globtstatdynarraytrec2[4][1].recs := nil;
      //GlobTStatDynArrayPRec2: TStatDynArrayPRec2;
      SetLength(GlobTStatDynArrayPRec2[3], 3);
      GlobTStatDynArrayPRec2[3][0] := @GlobTDynDynArrayTRec2[0][0];
      GlobTStatDynArrayPRec2[3][1] := @GlobTDynDynArrayTRec2[0][1];
      SetLength(GlobTStatDynArrayPRec2[4], 3);
      GlobTStatDynArrayPRec2[4][0] := @GlobTDynDynArrayTRec2[1][0];
      GlobTStatDynArrayPRec2[4][1] := @GlobTDynDynArrayTRec2[1][1];
      //GlobTStatStatArrayTRec2: TStatStatArrayTRec2;
      globtstatstatarraytrec2[3][3].c := 30;            globtstatstatarraytrec2[3][3].recs := nil;
      globtstatstatarraytrec2[3][4].c := 31;            globtstatstatarraytrec2[3][4].recs := nil;
      globtstatstatarraytrec2[4][3].c := 35;            globtstatstatarraytrec2[4][3].recs := nil;
      globtstatstatarraytrec2[4][4].c := 36;            globtstatstatarraytrec2[4][4].recs := nil;
      //GlobTStatStatArrayPRec2: TStatStatArrayPRec2;
      GlobTStatStatArrayPRec2[3][3] := @GlobTStatStatArrayTRec2[3][3];
      GlobTStatStatArrayPRec2[3][4] := @GlobTStatStatArrayTRec2[3][4];
      GlobTStatStatArrayPRec2[4][3] := @GlobTStatStatArrayTRec2[4][3];
      GlobTStatStatArrayPRec2[4][4] := @GlobTStatStatArrayTRec2[4][4];



  // dyn arrays of named arrays
      //GlobTDynDynTRec1Array: TDynDynTRec1Array;
      SetLength(GlobTDynDynTRec1Array, 3);
      SetLength(GlobTDynDynTRec1Array[0], 3);
      globtdyndyntrec1array[0][0].a := 80;            globtdyndyntrec1array[0][0].b := 243;
      globtdyndyntrec1array[0][1].a := 81;            globtdyndyntrec1array[0][1].b := 243;
      SetLength(GlobTDynDynTRec1Array[1], 3);
      globtdyndyntrec1array[1][0].a := 85;            globtdyndyntrec1array[1][0].b := 243;
      globtdyndyntrec1array[1][1].a := 86;            globtdyndyntrec1array[1][1].b := 243;
      //GlobTDynDynPrec1Array: TDynDynPrec1Array;
      SetLength(GlobTDynDynPrec1Array, 3);
      SetLength(GlobTDynDynPrec1Array[0], 3);
      GlobTDynDynPrec1Array[0][0] := @GlobTDynDynTRec1Array[0][0];
      GlobTDynDynPrec1Array[0][1] := @GlobTDynDynTRec1Array[0][1];
      SetLength(GlobTDynDynPrec1Array[1], 3);
      GlobTDynDynPrec1Array[1][0] := @GlobTDynDynTRec1Array[1][0];
      GlobTDynDynPrec1Array[1][1] := @GlobTDynDynTRec1Array[1][1];
      //GlobTDynStatTRec1Array: TDynStatTRec1Array;
      SetLength(GlobTDynStatTRec1Array, 3);
      globtdynstattrec1array[0][3].a := 70;            globtdynstattrec1array[0][3].b := 243;
      globtdynstattrec1array[0][4].a := 71;            globtdynstattrec1array[0][4].b := 243;
      globtdynstattrec1array[1][3].a := 75;            globtdynstattrec1array[1][3].b := 243;
      globtdynstattrec1array[1][4].a := 76;            globtdynstattrec1array[1][4].b := 243;
      //GlobTDynStatPRec1Array: TDynStatPRec1Array;
      SetLength(GlobTDynStatPRec1Array, 3);
      GlobTDynStatPRec1Array[0][3] := @GlobTDynStatTRec1Array[0][3];
      GlobTDynStatPRec1Array[0][4] := @GlobTDynStatTRec1Array[0][4];
      GlobTDynStatPRec1Array[1][3] := @GlobTDynStatTRec1Array[1][3];
      GlobTDynStatPRec1Array[1][4] := @GlobTDynStatTRec1Array[1][4];
      //GlobTDynPDynTRec1Array: TDynPDynTRec1Array;
      SetLength(GlobTDynPDynTRec1Array, 3);
      GlobTDynPDynTRec1Array[0] := @GlobTDynDynTRec1Array[0];
      GlobTDynPDynTRec1Array[1] := @GlobTDynDynTRec1Array[1];
      //GlobTDynPStatTRec1Array: TDynPStatTRec1Array;
      SetLength(GlobTDynPStatTRec1Array, 3);
      GlobTDynPStatTRec1Array[0] := @GlobTDynStatTRec1Array[0];
      GlobTDynPStatTRec1Array[1] := @GlobTDynStatTRec1Array[1];
      //TDynPDynTRec1NPArray = array of ^TDynArrayTRec1NP;
      SetLength(GlobTDynPDynTRec1NPArray, 3);
      GlobTDynPDynTRec1NPArray[0] := @GlobTDynArrayTRec1NP;  // 500, 501
      GlobTDynPDynTRec1NPArray[1] := @GlobTDynArrayTRec1NP2; // 505, 506;
      //TDynPStatTRec1NPArray= array of ^TStatArrayTRec1NP;
      SetLength(GlobTDynPStatTRec1NPArray, 3);
      GlobTDynPStatTRec1NPArray[0] := @GlobTStatArrayTRec1NP;  // 510, 511
      GlobTDynPStatTRec1NPArray[1] := @GlobTStatArrayTRec1NP2; // 515, 516


      //GlobTDynDynTRec2Array: TDynDynTRec2Array;
      SetLength(GlobTDynDynTRec2Array, 3);
      SetLength(GlobTDynDynTRec2Array[0], 3);
      globtdyndyntrec2array[0][0].c := 80;            globtdyndyntrec2array[0][0].recs := nil;
      globtdyndyntrec2array[0][1].c := 81;            globtdyndyntrec2array[0][1].recs := nil;
      SetLength(GlobTDynDynTRec2Array[1], 3);
      globtdyndyntrec2array[1][0].c := 85;            globtdyndyntrec2array[1][0].recs := nil;
      globtdyndyntrec2array[1][1].c := 86;            globtdyndyntrec2array[1][1].recs := nil;
      //GlobTDynDynPRec2Array: TDynDynPRec2Array;
      SetLength(GlobTDynDynPRec2Array, 3);
      SetLength(GlobTDynDynPRec2Array[0], 3);
      GlobTDynDynPRec2Array[0][0] := @GlobTDynDynTRec2Array[0][0];
      GlobTDynDynPRec2Array[0][1] := @GlobTDynDynTRec2Array[0][1];
      SetLength(GlobTDynDynPRec2Array[1], 3);
      GlobTDynDynPRec2Array[1][0] := @GlobTDynDynTRec2Array[1][0];
      GlobTDynDynPRec2Array[1][1] := @GlobTDynDynTRec2Array[1][1];
      //GlobTDynDynPPrec2Array: TDynDynPPrec2Array;
      SetLength(GlobTDynDynPPrec2Array, 3);
      SetLength(GlobTDynDynPPrec2Array[0], 3);
      GlobTDynDynPPrec2Array[0][0] := @GlobTDynDynPRec2Array[0][0];
      GlobTDynDynPPrec2Array[0][1] := @GlobTDynDynPRec2Array[0][1];
      SetLength(GlobTDynDynPPrec2Array[1], 3);
      GlobTDynDynPPrec2Array[1][0] := @GlobTDynDynPRec2Array[1][0];
      GlobTDynDynPPrec2Array[1][1] := @GlobTDynDynPRec2Array[1][1];
      //GlobTDynStatTRec2Array: TDynStatTRec2Array;
      SetLength(GlobTDynStatTRec2Array, 3);
      globtdynstattrec2array[0][3].c := 70;            globtdynstattrec2array[0][3].recs := nil;
      globtdynstattrec2array[0][4].c := 71;            globtdynstattrec2array[0][4].recs := nil;
      globtdynstattrec2array[1][3].c := 75;            globtdynstattrec2array[1][3].recs := nil;
      globtdynstattrec2array[1][4].c := 76;            globtdynstattrec2array[1][4].recs := nil;
      //GlobTDynStatPRec2Array: TDynStatPRec2Array;
      SetLength(GlobTDynStatPRec2Array, 3);
      GlobTDynStatPRec2Array[0][3] := @GlobTDynStatTRec2Array[0][3];
      GlobTDynStatPRec2Array[0][4] := @GlobTDynStatTRec2Array[0][4];
      GlobTDynStatPRec2Array[1][3] := @GlobTDynStatTRec2Array[1][3];
      GlobTDynStatPRec2Array[1][4] := @GlobTDynStatTRec2Array[1][4];
      //GlobTDynStatPPRec2Array: TDynStatPPRec2Array;
      SetLength(GlobTDynStatPPRec2Array, 3);
      GlobTDynStatPPRec2Array[0][3] := @GlobTDynStatPRec2Array[0][3];
      GlobTDynStatPPRec2Array[0][4] := @GlobTDynStatPRec2Array[0][4];
      GlobTDynStatPPRec2Array[1][3] := @GlobTDynStatPRec2Array[1][3];
      GlobTDynStatPPRec2Array[1][4] := @GlobTDynStatPRec2Array[1][4];



  // stat arrays of named arrays
      //GlobTStatDynTRec1Array: TStatDynTRec1Array;
      SetLength(GlobTStatDynTRec1Array[3], 3);
      globtstatdyntrec1array[3][0].a := 80;            globtstatdyntrec1array[3][0].b := 243;
      globtstatdyntrec1array[3][1].a := 81;            globtstatdyntrec1array[3][1].b := 243;
      SetLength(GlobTStatDynTRec1Array[4], 3);
      globtstatdyntrec1array[4][0].a := 85;            globtstatdyntrec1array[4][0].b := 243;
      globtstatdyntrec1array[4][1].a := 86;            globtstatdyntrec1array[4][1].b := 243;
      //GlobTStatDynPrec1Array: TStatDynPrec1Array;
      SetLength(GlobTStatDynPrec1Array[3], 3);
      GlobTStatDynPrec1Array[3][0] := @GlobTStatDynTRec1Array[3][0];
      GlobTStatDynPrec1Array[3][1] := @GlobTStatDynTRec1Array[3][1];
      SetLength(GlobTStatDynPrec1Array[4], 3);
      GlobTStatDynPrec1Array[4][0] := @GlobTStatDynTRec1Array[4][0];
      GlobTStatDynPrec1Array[4][1] := @GlobTStatDynTRec1Array[4][1];
      //GlobTStatStatTRec1Array: TStatStatTRec1Array;
      globtstatstattrec1array[3][3].a := 70;            globtstatstattrec1array[3][3].b := 243;
      globtstatstattrec1array[3][4].a := 71;            globtstatstattrec1array[3][4].b := 243;
      globtstatstattrec1array[4][3].a := 75;            globtstatstattrec1array[4][3].b := 243;
      globtstatstattrec1array[4][4].a := 76;            globtstatstattrec1array[4][4].b := 243;
      //GlobTStatStatPRec1Array: TStatStatPRec1Array;
      GlobTStatStatPRec1Array[3][3] := @GlobTStatStatTRec1Array[3][3];
      GlobTStatStatPRec1Array[3][4] := @GlobTStatStatTRec1Array[3][4];
      GlobTStatStatPRec1Array[4][3] := @GlobTStatStatTRec1Array[4][3];
      GlobTStatStatPRec1Array[4][4] := @GlobTStatStatTRec1Array[4][4];
      //GlobTStatPDynTRec1Array: TStatPDynTRec1Array;
      GlobTStatPDynTRec1Array[3] := @GlobTStatDynTRec1Array[3];
      GlobTStatPDynTRec1Array[4] := @GlobTStatDynTRec1Array[4];
      //GlobTStatPStatTRec1Array: TStatPStatTRec1Array;
      GlobTStatPStatTRec1Array[3] := @GlobTStatStatTRec1Array[3];
      GlobTStatPStatTRec1Array[4] := @GlobTStatStatTRec1Array[4];


      //GlobTStatDynTRec2Array: TStatDynTRec2Array;
      SetLength(GlobTStatDynTRec2Array[3], 3);
      globtstatdyntrec2array[3][0].c := 80;            globtstatdyntrec2array[3][0].recs := nil;
      globtstatdyntrec2array[3][1].c := 81;            globtstatdyntrec2array[3][1].recs := nil;
      SetLength(GlobTStatDynTRec2Array[4], 3);
      globtstatdyntrec2array[4][0].c := 85;            globtstatdyntrec2array[4][0].recs := nil;
      globtstatdyntrec2array[4][1].c := 86;            globtstatdyntrec2array[4][1].recs := nil;
      //GlobTStatDynPRec2Array: TStatDynPRec2Array;
      SetLength(GlobTStatDynPRec2Array[3], 3);
      GlobTStatDynPRec2Array[3][0] := @GlobTStatDynTRec2Array[3][0];
      GlobTStatDynPRec2Array[3][1] := @GlobTStatDynTRec2Array[3][1];
      SetLength(GlobTStatDynPRec2Array[4], 3);
      GlobTStatDynPRec2Array[4][0] := @GlobTStatDynTRec2Array[4][0];
      GlobTStatDynPRec2Array[4][1] := @GlobTStatDynTRec2Array[4][1];
      //GlobTStatDynPPrec2Array: TStatDynPPrec2Array;
      SetLength(GlobTStatDynPPrec2Array[3], 3);
      GlobTStatDynPPrec2Array[3][0] := @GlobTStatDynPRec2Array[3][0];
      GlobTStatDynPPrec2Array[3][1] := @GlobTStatDynPRec2Array[3][1];
      SetLength(GlobTStatDynPPrec2Array[4], 3);
      GlobTStatDynPPrec2Array[4][0] := @GlobTStatDynPRec2Array[4][0];
      GlobTStatDynPPrec2Array[4][1] := @GlobTStatDynPRec2Array[4][1];
      //GlobTStatStatTRec2Array: TStatStatTRec2Array;
      globtstatstattrec2array[3][3].c := 70;            globtstatstattrec2array[3][3].recs := nil;
      globtstatstattrec2array[3][4].c := 71;            globtstatstattrec2array[3][4].recs := nil;
      globtstatstattrec2array[4][3].c := 75;            globtstatstattrec2array[4][3].recs := nil;
      globtstatstattrec2array[4][4].c := 76;            globtstatstattrec2array[4][4].recs := nil;
      //GlobTStatStatPRec2Array: TStatStatPRec2Array;
      GlobTStatStatPRec2Array[3][3] := @GlobTStatStatTRec2Array[3][3];
      GlobTStatStatPRec2Array[3][4] := @GlobTStatStatTRec2Array[3][4];
      GlobTStatStatPRec2Array[4][3] := @GlobTStatStatTRec2Array[4][3];
      GlobTStatStatPRec2Array[4][4] := @GlobTStatStatTRec2Array[4][4];
      //GlobTStatStatPPRec2Array: TStatStatPPRec2Array;
      GlobTStatStatPPRec2Array[3][3] := @GlobTStatStatPRec2Array[3][3];
      GlobTStatStatPPRec2Array[3][4] := @GlobTStatStatPRec2Array[3][4];
      GlobTStatStatPPRec2Array[4][3] := @GlobTStatStatPRec2Array[4][3];
      GlobTStatStatPPRec2Array[4][4] := @GlobTStatStatPRec2Array[4][4];


      globtenumarraytrec1[eaone].a      := 200;            globtenumarraytrec1[eaone].b := 243;
      globtenumarraytrec1[eatwo].a      := 201;            globtenumarraytrec1[eatwo].b := 243;
      globtsubenumarraytrec1[eatwo].a   := 205;            globtsubenumarraytrec1[eatwo].b := 243;
      globtsubenumarraytrec1[eathree].a := 205;            globtsubenumarraytrec1[eathree].b := 243;

      globtstatdualarraytrec2[3,3].c := 300;            globtstatdualarraytrec2[3,3].recs := nil;
      globtstatdualarraytrec2[3,4].c := 301;            globtstatdualarraytrec2[3,4].recs := nil;
      globtstatdualarraytrec2[4,5].c := 302;            globtstatdualarraytrec2[4,5].recs := nil;


// POINTER

      // dyn arrays
      GlobPDynArrayTRec1 := @GlobTDynArrayTRec1;
      GlobPDynArrayPRec1 := @GlobTDynArrayPRec1;
      GlobPDynDynArrayTRec1 := @GlobTDynDynArrayTRec1;
      GlobPDynDynArrayPRec1 := @GlobTDynDynArrayPRec1;
      GlobPDynStatArrayTRec1 := @GlobTDynStatArrayTRec1;
      GlobPDynStatArrayPRec1 := @GlobTDynStatArrayPRec1;

      GlobPDynArrayTRec2 := @GlobTDynArrayTRec2;
      GlobPDynArrayPRec2 := @GlobTDynArrayPRec2;
      GlobPDynArrayPPRec2 := @GlobTDynArrayPPRec2;
      GlobPDynDynArrayTRec2 := @GlobTDynDynArrayTRec2;
      GlobPDynDynArrayPRec2 := @GlobTDynDynArrayPRec2;
      GlobPDynStatArrayTRec2 := @GlobTDynStatArrayTRec2;
      GlobPDynStatArrayPRec2 := @GlobTDynStatArrayPRec2;


      // stat arrays
      GlobPStatArrayTRec1 := @GlobTStatArrayTRec1;
      GlobPStatArrayPRec1 := @GlobTStatArrayPRec1;
      GlobPStatDynArrayTRec1 := @GlobTStatDynArrayTRec1;
      GlobPStatDynArrayPRec1 := @GlobTStatDynArrayPRec1;
      GlobPStatStatArrayTRec1 := @GlobTStatStatArrayTRec1;
      GlobPStatStatArrayPRec1 := @GlobTStatStatArrayPRec1;

      GlobPStatArrayTRec2 := @GlobTStatArrayTRec2;
      GlobPStatArrayPRec2 := @GlobTStatArrayPRec2;
      GlobPStatArrayPPRec2 := @GlobTStatArrayPPRec2;
      GlobPStatDynArrayTRec2 := @GlobTStatDynArrayTRec2;
      GlobPStatDynArrayPRec2 := @GlobTStatDynArrayPRec2;
      GlobPStatStatArrayTRec2 := @GlobTStatStatArrayTRec2;
      GlobPStatStatArrayPRec2 := @GlobTStatStatArrayPRec2;


      // dyn arrays of named arrays
      GlobPDynDynTRec1Array := @GlobTDynDynTRec1Array;
      GlobPDynDynPrec1Array := @GlobTDynDynPrec1Array;
      GlobPDynStatTRec1Array := @GlobTDynStatTRec1Array;
      GlobPDynStatPRec1Array := @GlobTDynStatPRec1Array;
      GlobPDynPDynTRec1Array := @GlobTDynPDynTRec1Array;
      GlobPDynPStatTRec1Array := @GlobTDynPStatTRec1Array;

      GlobPDynDynTRec2Array := @GlobTDynDynTRec2Array;
      GlobPDynDynPrec2Array := @GlobTDynDynPrec2Array;
      GlobPDynDynPPrec2Array := @GlobTDynDynPPrec2Array;
      GlobPDynStatTRec2Array := @GlobTDynStatTRec2Array;
      GlobPDynStatPRec2Array := @GlobTDynStatPRec2Array;
      GlobPDynStatPPRec2Array := @GlobTDynStatPPRec2Array;

      // stat arrays of named arrays
      GlobPStatDynTRec1Array := @GlobTStatDynTRec1Array;
      GlobPStatDynPrec1Array := @GlobTStatDynPrec1Array;
      GlobPStatStatTRec1Array := @GlobTStatStatTRec1Array;
      GlobPStatStatPRec1Array := @GlobTStatStatPRec1Array;
      GlobPStatPDynTRec1Array := @GlobTStatPDynTRec1Array;
      GlobPStatPStatTRec1Array := @GlobTStatPStatTRec1Array;

      GlobPStatDynTRec2Array := @GlobTStatDynTRec2Array;
      GlobPStatDynPrec2Array := @GlobTStatDynPrec2Array;
      GlobPStatDynPPrec2Array := @GlobTStatDynPPrec2Array;
      GlobPStatStatTRec2Array := @GlobTStatStatTRec2Array;
      GlobPStatStatPRec2Array := @GlobTStatStatPRec2Array;
      GlobPStatStatPPRec2Array := @GlobTStatStatPPRec2Array;

      GlobPEnumArrayTRec1    := @GlobTEnumArrayTRec1;
      GlobPSubEnumArrayTRec1 := @GlobTSubEnumArrayTRec1;


// UN-NAMED types

  // dyn arrays
      //GlobADynArrayTRec1: TDynArrayTRec1;
      SetLength(GlobADynArrayTRec1, 3);
      globadynarraytrec1[0].a := 90;            globadynarraytrec1[0].b := 243;
      globadynarraytrec1[1].a := 91;            globadynarraytrec1[1].b := 243;
      //GlobADynArrayPRec1: TDynArrayPRec1;
      SetLength(GlobADynArrayPRec1, 3);
      GlobADynArrayPRec1[0] := @GlobADynArrayTRec1[0];
      GlobADynArrayPRec1[1] := @GlobADynArrayTRec1[1];
      //GlobADynDynArrayTRec1: TDynDynArrayTRec1;
      SetLength(GlobADynDynArrayTRec1, 3);
      SetLength(GlobADynDynArrayTRec1[0], 3);
      globadyndynarraytrec1[0][0].a := 80;            globadyndynarraytrec1[0][0].b := 243;
      globadyndynarraytrec1[0][1].a := 81;            globadyndynarraytrec1[0][1].b := 243;
      SetLength(GlobADynDynArrayTRec1[1], 3);
      globadyndynarraytrec1[1][0].a := 85;            globadyndynarraytrec1[1][0].b := 243;
      globadyndynarraytrec1[1][1].a := 86;            globadyndynarraytrec1[1][1].b := 243;
      //GlobADynDynArrayPRec1: TDynDynArrayPRec1;
      SetLength(GlobADynDynArrayPRec1, 3);
      SetLength(GlobADynDynArrayPRec1[0], 3);
      GlobADynDynArrayPRec1[0][0] := @GlobADynDynArrayTRec1[0][0];
      GlobADynDynArrayPRec1[0][1] := @GlobADynDynArrayTRec1[0][1];
      SetLength(GlobADynDynArrayPRec1[1], 3);
      GlobADynDynArrayPRec1[1][0] := @GlobADynDynArrayTRec1[1][0];
      GlobADynDynArrayPRec1[1][1] := @GlobADynDynArrayTRec1[1][1];
      //GlobADynStatArrayTRec1: TDynStatArrayTRec1;
      SetLength(GlobADynStatArrayTRec1, 3);
      globadynstatarraytrec1[0][3].a := 70;            globadynstatarraytrec1[0][3].b := 243;
      globadynstatarraytrec1[0][4].a := 71;            globadynstatarraytrec1[0][4].b := 243;
      globadynstatarraytrec1[1][3].a := 75;            globadynstatarraytrec1[1][3].b := 243;
      globadynstatarraytrec1[1][4].a := 76;            globadynstatarraytrec1[1][4].b := 243;
      //GlobADynStatArrayPRec1: TDynStatArrayPRec1;
      SetLength(GlobADynStatArrayPRec1, 3);
      GlobADynStatArrayPRec1[0][3] := @GlobADynStatArrayTRec1[0][3];
      GlobADynStatArrayPRec1[0][4] := @GlobADynStatArrayTRec1[0][4];
      GlobADynStatArrayPRec1[1][3] := @GlobADynStatArrayTRec1[1][3];
      GlobADynStatArrayPRec1[1][4] := @GlobADynStatArrayTRec1[1][4];

      //GlobADynArrayTRec2: TDynArrayTRec2;
      SetLength(GlobADynArrayTRec2, 3);
      globadynarraytrec2[0].c := 90;            globadynarraytrec2[0].recs := nil;
      globadynarraytrec2[1].c := 91;            globadynarraytrec2[1].recs := nil;
      //GlobADynArrayPRec2: TDynArrayPRec2;
      SetLength(GlobADynArrayPRec2, 3);
      GlobADynArrayPRec2[0] := @GlobADynArrayTRec2[0];
      GlobADynArrayPRec2[1] := @GlobADynArrayTRec2[1];
      //GlobADynDynArrayTRec2: TDynDynArrayTRec2;
      SetLength(GlobADynDynArrayTRec2, 3);
      SetLength(GlobADynDynArrayTRec2[0], 3);
      globadyndynarraytrec2[0][0].c := 80;            globadyndynarraytrec2[0][0].recs := nil;
      globadyndynarraytrec2[0][1].c := 81;            globadyndynarraytrec2[0][1].recs := nil;
      SetLength(GlobADynDynArrayTRec2[1], 3);
      globadyndynarraytrec2[1][0].c := 85;            globadyndynarraytrec2[1][0].recs := nil;
      globadyndynarraytrec2[1][1].c := 86;            globadyndynarraytrec2[1][1].recs := nil;
      //GlobADynDynArrayPRec2: TDynDynArrayPRec2;
      SetLength(GlobADynDynArrayPRec2, 3);
      SetLength(GlobADynDynArrayPRec2[0], 3);
      GlobADynDynArrayPRec2[0][0] := @GlobADynDynArrayTRec2[0][0];
      GlobADynDynArrayPRec2[0][1] := @GlobADynDynArrayTRec2[0][1];
      SetLength(GlobADynDynArrayPRec2[1], 3);
      GlobADynDynArrayPRec2[1][0] := @GlobADynDynArrayTRec2[1][0];
      GlobADynDynArrayPRec2[1][1] := @GlobADynDynArrayTRec2[1][1];
      //GlobADynStatArrayTRec2: TDynStatArrayTRec2;
      SetLength(GlobADynStatArrayTRec2, 3);
      globadynstatarraytrec2[0][3].c := 70;            globadynstatarraytrec2[0][3].recs := nil;
      globadynstatarraytrec2[0][4].c := 71;            globadynstatarraytrec2[0][4].recs := nil;
      globadynstatarraytrec2[1][3].c := 75;            globadynstatarraytrec2[1][3].recs := nil;
      globadynstatarraytrec2[1][4].c := 76;            globadynstatarraytrec2[1][4].recs := nil;
      //GlobADynStatArrayPRec2: TDynStatArrayPRec2;
      SetLength(GlobADynStatArrayPRec2, 3);
      GlobADynStatArrayPRec2[0][3] := @GlobADynStatArrayTRec2[0][3];
      GlobADynStatArrayPRec2[0][4] := @GlobADynStatArrayTRec2[0][4];
      GlobADynStatArrayPRec2[1][3] := @GlobADynStatArrayTRec2[1][3];
      GlobADynStatArrayPRec2[1][4] := @GlobADynStatArrayTRec2[1][4];


  // stat arrays
      //GlobAStatArrayTRec1: TStatArrayTRec1;
      globastatarraytrec1[3].a := 50;            globastatarraytrec1[3].b := 243;
      globastatarraytrec1[4].a := 51;            globastatarraytrec1[4].b := 243;
      //GlobAStatArrayPRec1: TStatArrayPRec1;
      GlobAStatArrayPRec1[3] := @GlobAStatArrayTRec1[3];
      GlobAStatArrayPRec1[4] := @GlobAStatArrayTRec1[4];
      //GlobAStatDynArrayTRec1: TStatDynArrayTRec1;
      SetLength(GlobAStatDynArrayTRec1[3], 3);
      globastatdynarraytrec1[3][0].a := 40;            globastatdynarraytrec1[3][0].b := 243;
      globastatdynarraytrec1[3][1].a := 41;            globastatdynarraytrec1[3][1].b := 243;
      SetLength(GlobAStatDynArrayTRec1[4], 3);
      globastatdynarraytrec1[4][0].a := 45;            globastatdynarraytrec1[4][0].b := 243;
      globastatdynarraytrec1[4][1].a := 46;            globastatdynarraytrec1[4][1].b := 243;
      //GlobAStatDynArrayPRec1: TStatDynArrayPRec1;
      SetLength(GlobAStatDynArrayPRec1[3], 3);
      GlobAStatDynArrayPRec1[3][0] := @GlobADynDynArrayTRec1[0][0];
      GlobAStatDynArrayPRec1[3][1] := @GlobADynDynArrayTRec1[0][1];
      SetLength(GlobAStatDynArrayPRec1[4], 3);
      GlobAStatDynArrayPRec1[4][0] := @GlobADynDynArrayTRec1[1][0];
      GlobAStatDynArrayPRec1[4][1] := @GlobADynDynArrayTRec1[1][1];
      //GlobAStatStatArrayTRec1: TStatStatArrayTRec1;
      globastatstatarraytrec1[3][3].a := 30;            globastatstatarraytrec1[3][3].b := 243;
      globastatstatarraytrec1[3][4].a := 31;            globastatstatarraytrec1[3][4].b := 243;
      globastatstatarraytrec1[4][3].a := 35;            globastatstatarraytrec1[4][3].b := 243;
      globastatstatarraytrec1[4][4].a := 36;            globastatstatarraytrec1[4][4].b := 243;
      //GlobAStatStatArrayPRec1: TStatStatArrayPRec1;
      GlobAStatStatArrayPRec1[3][3] := @GlobAStatStatArrayTRec1[3][3];
      GlobAStatStatArrayPRec1[3][4] := @GlobAStatStatArrayTRec1[3][4];
      GlobAStatStatArrayPRec1[4][3] := @GlobAStatStatArrayTRec1[4][3];
      GlobAStatStatArrayPRec1[4][4] := @GlobAStatStatArrayTRec1[4][4];

      //GlobAStatArrayTRec2: TStatArrayTRec2;
      globastatarraytrec2[3].c := 50;            globastatarraytrec2[3].recs := nil;
      globastatarraytrec2[4].c := 51;            globastatarraytrec2[4].recs := nil;
      //GlobAStatArrayPRec2: TStatArrayPRec2;
      GlobAStatArrayPRec2[3] := @GlobAStatArrayTRec2[3];
      GlobAStatArrayPRec2[4] := @GlobAStatArrayTRec2[4];
      //GlobAStatDynArrayTRec2: TStatDynArrayTRec2;
      SetLength(GlobAStatDynArrayTRec2[3], 3);
      globastatdynarraytrec2[3][0].c := 40;            globastatdynarraytrec2[3][0].recs := nil;
      globastatdynarraytrec2[3][1].c := 41;            globastatdynarraytrec2[3][1].recs := nil;
      SetLength(GlobAStatDynArrayTRec2[4], 3);
      globastatdynarraytrec2[4][0].c := 45;            globastatdynarraytrec2[4][0].recs := nil;
      globastatdynarraytrec2[4][1].c := 46;            globastatdynarraytrec2[4][1].recs := nil;
      //GlobAStatDynArrayPRec2: TStatDynArrayPRec2;
      SetLength(GlobAStatDynArrayPRec2[3], 3);
      GlobAStatDynArrayPRec2[3][0] := @GlobADynDynArrayTRec2[0][0];
      GlobAStatDynArrayPRec2[3][1] := @GlobADynDynArrayTRec2[0][1];
      SetLength(GlobAStatDynArrayPRec2[4], 3);
      GlobAStatDynArrayPRec2[4][0] := @GlobADynDynArrayTRec2[1][0];
      GlobAStatDynArrayPRec2[4][1] := @GlobADynDynArrayTRec2[1][1];
      //GlobAStatStatArrayTRec2: TStatStatArrayTRec2;
      globastatstatarraytrec2[3][3].c := 30;            globastatstatarraytrec2[3][3].recs := nil;
      globastatstatarraytrec2[3][4].c := 31;            globastatstatarraytrec2[3][4].recs := nil;
      globastatstatarraytrec2[4][3].c := 35;            globastatstatarraytrec2[4][3].recs := nil;
      globastatstatarraytrec2[4][4].c := 36;            globastatstatarraytrec2[4][4].recs := nil;
      //GlobAStatStatArrayPRec2: TStatStatArrayPRec2;
      GlobAStatStatArrayPRec2[3][3] := @GlobAStatStatArrayTRec2[3][3];
      GlobAStatStatArrayPRec2[3][4] := @GlobAStatStatArrayTRec2[3][4];
      GlobAStatStatArrayPRec2[4][3] := @GlobAStatStatArrayTRec2[4][3];
      GlobAStatStatArrayPRec2[4][4] := @GlobAStatStatArrayTRec2[4][4];



  // dyn arrays of named arrays
      //GlobADynDynTRec1Array: TDynDynTRec1Array;
      SetLength(GlobADynDynTRec1Array, 3);
      SetLength(GlobADynDynTRec1Array[0], 3);
      globadyndyntrec1array[0][0].a := 80;            globadyndyntrec1array[0][0].b := 243;
      globadyndyntrec1array[0][1].a := 81;            globadyndyntrec1array[0][1].b := 243;
      SetLength(GlobADynDynTRec1Array[1], 3);
      globadyndyntrec1array[1][0].a := 85;            globadyndyntrec1array[1][0].b := 243;
      globadyndyntrec1array[1][1].a := 86;            globadyndyntrec1array[1][1].b := 243;
      //GlobADynDynPrec1Array: TDynDynPrec1Array;
      SetLength(GlobADynDynPrec1Array, 3);
      SetLength(GlobADynDynPrec1Array[0], 3);
      GlobADynDynPrec1Array[0][0] := @GlobADynDynTRec1Array[0][0];
      GlobADynDynPrec1Array[0][1] := @GlobADynDynTRec1Array[0][1];
      SetLength(GlobADynDynPrec1Array[1], 3);
      GlobADynDynPrec1Array[1][0] := @GlobADynDynTRec1Array[1][0];
      GlobADynDynPrec1Array[1][1] := @GlobADynDynTRec1Array[1][1];
      //GlobADynStatTRec1Array: TDynStatTRec1Array;
      SetLength(GlobADynStatTRec1Array, 3);
      globadynstattrec1array[0][3].a := 70;            globadynstattrec1array[0][3].b := 243;
      globadynstattrec1array[0][4].a := 71;            globadynstattrec1array[0][4].b := 243;
      globadynstattrec1array[1][3].a := 75;            globadynstattrec1array[1][3].b := 243;
      globadynstattrec1array[1][4].a := 76;            globadynstattrec1array[1][4].b := 243;
      //GlobADynStatPRec1Array: TDynStatPRec1Array;
      SetLength(GlobADynStatPRec1Array, 3);
      GlobADynStatPRec1Array[0][3] := @GlobADynStatTRec1Array[0][3];
      GlobADynStatPRec1Array[0][4] := @GlobADynStatTRec1Array[0][4];
      GlobADynStatPRec1Array[1][3] := @GlobADynStatTRec1Array[1][3];
      GlobADynStatPRec1Array[1][4] := @GlobADynStatTRec1Array[1][4];
      //GlobADynPDynTRec1Array: TDynPDynTRec1Array;
      SetLength(GlobADynPDynTRec1Array, 3);
      GlobADynPDynTRec1Array[0] := @GlobADynDynTRec1Array[0];
      GlobADynPDynTRec1Array[1] := @GlobADynDynTRec1Array[1];
      //GlobADynPStatTRec1Array: TDynPStatTRec1Array;
      SetLength(GlobADynPStatTRec1Array, 3);
      GlobADynPStatTRec1Array[0] := @GlobADynStatTRec1Array[0];
      GlobADynPStatTRec1Array[1] := @GlobADynStatTRec1Array[1];
      //TDynPDynTRec1NPArray = array of ^TDynArrayTRec1NP;
      GlobPDynPDynTRec1NPArray := @GlobTDynPDynTRec1NPArray;
      //TDynPStatTRec1NPArray= array of ^TStatArrayTRec1NP;
      GlobPDynPStatTRec1NPArray := @GlobTDynPStatTRec1NPArray;


      //GlobADynDynTRec2Array: TDynDynTRec2Array;
      SetLength(GlobADynDynTRec2Array, 3);
      SetLength(GlobADynDynTRec2Array[0], 3);
      globadyndyntrec2array[0][0].c := 80;            globadyndyntrec2array[0][0].recs := nil;
      globadyndyntrec2array[0][1].c := 81;            globadyndyntrec2array[0][1].recs := nil;
      SetLength(GlobADynDynTRec2Array[1], 3);
      globadyndyntrec2array[1][0].c := 85;            globadyndyntrec2array[1][0].recs := nil;
      globadyndyntrec2array[1][1].c := 86;            globadyndyntrec2array[1][1].recs := nil;
      //GlobADynDynPRec2Array: TDynDynPRec2Array;
      SetLength(GlobADynDynPRec2Array, 3);
      SetLength(GlobADynDynPRec2Array[0], 3);
      GlobADynDynPRec2Array[0][0] := @GlobADynDynTRec2Array[0][0];
      GlobADynDynPRec2Array[0][1] := @GlobADynDynTRec2Array[0][1];
      SetLength(GlobADynDynPRec2Array[1], 3);
      GlobADynDynPRec2Array[1][0] := @GlobADynDynTRec2Array[1][0];
      GlobADynDynPRec2Array[1][1] := @GlobADynDynTRec2Array[1][1];
      //GlobADynDynPPrec2Array: TDynDynPPrec2Array;
      SetLength(GlobADynDynPPrec2Array, 3);
      SetLength(GlobADynDynPPrec2Array[0], 3);
      GlobADynDynPPrec2Array[0][0] := @GlobADynDynPRec2Array[0][0];
      GlobADynDynPPrec2Array[0][1] := @GlobADynDynPRec2Array[0][1];
      SetLength(GlobADynDynPPrec2Array[1], 3);
      GlobADynDynPPrec2Array[1][0] := @GlobADynDynPRec2Array[1][0];
      GlobADynDynPPrec2Array[1][1] := @GlobADynDynPRec2Array[1][1];
      //GlobADynStatTRec2Array: TDynStatTRec2Array;
      SetLength(GlobADynStatTRec2Array, 3);
      globadynstattrec2array[0][3].c := 70;            globadynstattrec2array[0][3].recs := nil;
      globadynstattrec2array[0][4].c := 71;            globadynstattrec2array[0][4].recs := nil;
      globadynstattrec2array[1][3].c := 75;            globadynstattrec2array[1][3].recs := nil;
      globadynstattrec2array[1][4].c := 76;            globadynstattrec2array[1][4].recs := nil;
      //GlobADynStatPRec2Array: TDynStatPRec2Array;
      SetLength(GlobADynStatPRec2Array, 3);
      GlobADynStatPRec2Array[0][3] := @GlobADynStatTRec2Array[0][3];
      GlobADynStatPRec2Array[0][4] := @GlobADynStatTRec2Array[0][4];
      GlobADynStatPRec2Array[1][3] := @GlobADynStatTRec2Array[1][3];
      GlobADynStatPRec2Array[1][4] := @GlobADynStatTRec2Array[1][4];
      //GlobADynStatPPRec2Array: TDynStatPPRec2Array;
      SetLength(GlobADynStatPPRec2Array, 3);
      GlobADynStatPPRec2Array[0][3] := @GlobADynStatPRec2Array[0][3];
      GlobADynStatPPRec2Array[0][4] := @GlobADynStatPRec2Array[0][4];
      GlobADynStatPPRec2Array[1][3] := @GlobADynStatPRec2Array[1][3];
      GlobADynStatPPRec2Array[1][4] := @GlobADynStatPRec2Array[1][4];



  // stat arrays of named arrays
      //GlobAStatDynTRec1Array: TStatDynTRec1Array;
      SetLength(GlobAStatDynTRec1Array, 3);
      SetLength(GlobAStatDynTRec1Array[0], 3);
      globastatdyntrec1array[0][0].a := 80;            globastatdyntrec1array[0][0].b := 243;
      globastatdyntrec1array[0][1].a := 81;            globastatdyntrec1array[0][1].b := 243;
      SetLength(GlobAStatDynTRec1Array[1], 3);
      globastatdyntrec1array[1][0].a := 85;            globastatdyntrec1array[1][0].b := 243;
      globastatdyntrec1array[1][1].a := 86;            globastatdyntrec1array[1][1].b := 243;
      //GlobAStatDynPrec1Array: TStatDynPrec1Array;
      SetLength(GlobAStatDynPrec1Array, 3);
      SetLength(GlobAStatDynPrec1Array[0], 3);
      GlobAStatDynPrec1Array[0][0] := @GlobAStatDynTRec1Array[0][0];
      GlobAStatDynPrec1Array[0][1] := @GlobAStatDynTRec1Array[0][1];
      SetLength(GlobAStatDynPrec1Array[1], 3);
      GlobAStatDynPrec1Array[1][0] := @GlobAStatDynTRec1Array[1][0];
      GlobAStatDynPrec1Array[1][1] := @GlobAStatDynTRec1Array[1][1];
      //GlobAStatStatTRec1Array: TStatStatTRec1Array;
      SetLength(GlobAStatStatTRec1Array, 3);
      globastatstattrec1array[0][3].a := 70;            globastatstattrec1array[0][3].b := 243;
      globastatstattrec1array[0][4].a := 71;            globastatstattrec1array[0][4].b := 243;
      globastatstattrec1array[1][3].a := 75;            globastatstattrec1array[1][3].b := 243;
      globastatstattrec1array[1][4].a := 76;            globastatstattrec1array[1][4].b := 243;
      //GlobAStatStatPRec1Array: TStatStatPRec1Array;
      SetLength(GlobAStatStatPRec1Array, 3);
      GlobAStatStatPRec1Array[0][3] := @GlobAStatStatTRec1Array[0][3];
      GlobAStatStatPRec1Array[0][4] := @GlobAStatStatTRec1Array[0][4];
      GlobAStatStatPRec1Array[1][3] := @GlobAStatStatTRec1Array[1][3];
      GlobAStatStatPRec1Array[1][4] := @GlobAStatStatTRec1Array[1][4];
      //GlobAStatPDynTRec1Array: TStatPDynTRec1Array;
      SetLength(GlobAStatPDynTRec1Array, 3);
      GlobAStatPDynTRec1Array[0] := @GlobAStatDynTRec1Array[0];
      GlobAStatPDynTRec1Array[1] := @GlobAStatDynTRec1Array[1];
      //GlobAStatPStatTRec1Array: TStatPStatTRec1Array;
      SetLength(GlobAStatPStatTRec1Array, 3);
      GlobAStatPStatTRec1Array[0] := @GlobAStatStatTRec1Array[0];
      GlobAStatPStatTRec1Array[1] := @GlobAStatStatTRec1Array[1];


      //GlobAStatDynTRec2Array: TStatDynTRec2Array;
      SetLength(GlobAStatDynTRec2Array, 3);
      SetLength(GlobAStatDynTRec2Array[0], 3);
      globastatdyntrec2array[0][0].c := 80;            globastatdyntrec2array[0][0].recs := nil;
      globastatdyntrec2array[0][1].c := 81;            globastatdyntrec2array[0][1].recs := nil;
      SetLength(GlobAStatDynTRec2Array[1], 3);
      globastatdyntrec2array[1][0].c := 85;            globastatdyntrec2array[1][0].recs := nil;
      globastatdyntrec2array[1][1].c := 86;            globastatdyntrec2array[1][1].recs := nil;
      //GlobAStatDynPRec2Array: TStatDynPRec2Array;
      SetLength(GlobAStatDynPRec2Array, 3);
      SetLength(GlobAStatDynPRec2Array[0], 3);
      GlobAStatDynPRec2Array[0][0] := @GlobAStatDynTRec2Array[0][0];
      GlobAStatDynPRec2Array[0][1] := @GlobAStatDynTRec2Array[0][1];
      SetLength(GlobAStatDynPRec2Array[1], 3);
      GlobAStatDynPRec2Array[1][0] := @GlobAStatDynTRec2Array[1][0];
      GlobAStatDynPRec2Array[1][1] := @GlobAStatDynTRec2Array[1][1];
      //GlobAStatDynPPrec2Array: TStatDynPPrec2Array;
      SetLength(GlobAStatDynPPrec2Array, 3);
      SetLength(GlobAStatDynPPrec2Array[0], 3);
      GlobAStatDynPPrec2Array[0][0] := @GlobAStatDynPRec2Array[0][0];
      GlobAStatDynPPrec2Array[0][1] := @GlobAStatDynPRec2Array[0][1];
      SetLength(GlobAStatDynPPrec2Array[1], 3);
      GlobAStatDynPPrec2Array[1][0] := @GlobAStatDynPRec2Array[1][0];
      GlobAStatDynPPrec2Array[1][1] := @GlobAStatDynPRec2Array[1][1];
      //GlobAStatStatTRec2Array: TStatStatTRec2Array;
      SetLength(GlobAStatStatTRec2Array, 3);
      globastatstattrec2array[0][3].c := 70;            globastatstattrec2array[0][3].recs := nil;
      globastatstattrec2array[0][4].c := 71;            globastatstattrec2array[0][4].recs := nil;
      globastatstattrec2array[1][3].c := 75;            globastatstattrec2array[1][3].recs := nil;
      globastatstattrec2array[1][4].c := 76;            globastatstattrec2array[1][4].recs := nil;
      //GlobAStatStatPRec2Array: TStatStatPRec2Array;
      SetLength(GlobAStatStatPRec2Array, 3);
      GlobAStatStatPRec2Array[0][3] := @GlobAStatStatTRec2Array[0][3];
      GlobAStatStatPRec2Array[0][4] := @GlobAStatStatTRec2Array[0][4];
      GlobAStatStatPRec2Array[1][3] := @GlobAStatStatTRec2Array[1][3];
      GlobAStatStatPRec2Array[1][4] := @GlobAStatStatTRec2Array[1][4];
      //GlobAStatStatPPRec2Array: TStatStatPPRec2Array;
      SetLength(GlobAStatStatPPRec2Array, 3);
      GlobAStatStatPPRec2Array[0][3] := @GlobAStatStatPRec2Array[0][3];
      GlobAStatStatPPRec2Array[0][4] := @GlobAStatStatPRec2Array[0][4];
      GlobAStatStatPPRec2Array[1][3] := @GlobAStatStatPRec2Array[1][3];
      GlobAStatStatPPRec2Array[1][4] := @GlobAStatStatPRec2Array[1][4];

      SetLength(GlobADynDynDynArrayTRec1,3);
      GlobADynDynDynArrayTRec1[0] := GlobADynDynArrayTRec1;
      GlobADynDynDynArrayTRec1[1] := GlobADynDynArrayTRec1;

      SetLength(GlobADynDynDynDynArrayTRec1,3);
      GlobADynDynDynDynArrayTRec1[0] := GlobADynDynDynArrayTRec1;
      GlobADynDynDynDynArrayTRec1[1] := GlobADynDynDynArrayTRec1;

      SetLength(GlobADynArrayTRec5, 3);
      globadynarraytrec5[0].a := 10;
      globadynarraytrec5[0].c := 12;
      globadynarraytrec5[1].a := 11;
      globadynarraytrec5[1].c := 13;

      globastatarraytrec5[3].a := 15;
      globastatarraytrec5[3].c := 17;
      globastatarraytrec5[4].a := 16;
      globastatarraytrec5[4].c := 18;

      globaenumarraytrec1[eaone].a      := 200;            globaenumarraytrec1[eaone].b := 243;
      globaenumarraytrec1[eatwo].a      := 201;            globaenumarraytrec1[eatwo].b := 243;
      globasubenumarraytrec1[eatwo].a   := 205;            globasubenumarraytrec1[eatwo].b := 243;
      globasubenumarraytrec1[eathree].a := 205;            globasubenumarraytrec1[eathree].b := 243;

      globastatdualarraytrec2[3,3].c := 300;            globastatdualarraytrec2[3,3].recs := nil;
      globastatdualarraytrec2[3,4].c := 301;            globastatdualarraytrec2[3,4].recs := nil;
      globastatdualarraytrec2[4,3].c := 302;            globastatdualarraytrec2[4,3].recs := nil;


      //       GlobAStatDynDynArrayTRec2  : array [3..5] of array of array of TRecForArray2;

      SetLength(GlobAStatDynDynArrayTRec2[3], 3);
      SetLength(GlobAStatDynDynArrayTRec2[3][0], 2);
      SetLength(GlobAStatDynDynArrayTRec2[3][1], 2);
      SetLength(GlobAStatDynDynArrayTRec2[4], 3);
      SetLength(GlobAStatDynDynArrayTRec2[4][0], 2);
      SetLength(GlobAStatDynDynArrayTRec2[4][1], 2);
      GlobAStatDynDynArrayTRec2[3][0][0].c := 300;
      GlobAStatDynDynArrayTRec2[3][0][1].c := 301;
      GlobAStatDynDynArrayTRec2[3][1][0].c := 310;
      GlobAStatDynDynArrayTRec2[3][1][1].c := 311;
      GlobAStatDynDynArrayTRec2[4][0][0].c := 400;
      GlobAStatDynDynArrayTRec2[4][0][1].c := 401;
      GlobAStatDynDynArrayTRec2[4][1][0].c := 410;
      GlobAStatDynDynArrayTRec2[4][1][1].c := 411;

      SetLength(GlobADynDynStatArrayTRec2, 3);

    {$ENDIF}

    {$IFDEF Global_Body_NIL}
    //begin
    {$ENDIF}

  {%endregion}


