anchor.diff:          if (k==1) then
               allocate(ArrR(sz))
               read(fid) ArrR
  -            call this%AddArray(ArrR)
  +            P => arrR
  +            call this%AddArrayPointer(P)
           else if (k==2) then
               allocate(ArrD(sz))
               read(fid) ArrD
  -            call this%AddArray(ArrD)
  +            P => arrR
  +            call this%AddArrayPointer(P)
           else if (k==3) then
               allocate(ArrI(sz))
               read(fid) ArrI
  -            call this%AddArray(ArrI)
  +            P => arrR
  +            call this%AddArrayPointer(P)
           else if (k==4) then
               allocate(ArrL(sz))
               read(fid) ArrL
  -            call this%AddArray(ArrL)
  +            P => arrR
  +            call this%AddArrayPointer(P)
           else if (k==5) then
               allocate(character(sz)::St) !Ifort required class(*) pointer
               select type (St)
  
positive.code:     double precision, pointer :: ArrD(:)
      integer, pointer :: ArrI(:)
      logical, pointer :: ArrL(:)
      class(*), pointer :: St
  
      call this%Clear()
      this%OwnsObjects = .false.
      read (fid) num
      call this%SetCapacity(num)
      do i=1,num
  
negative.code:     Type is (real(list_prec))
          P = Arr
          class default
          call this%Error('TRealArrayList_Value: object of wrong type (eg. ifort 2017.0.4 bug)')
      end select
  
      end function TRealArrayList_Value
  