anchor.diff:  begin
     if (Index >= 0) and (Index < FCount) then begin
       if ACount > FCount - Index then ACount := Fcount - Index;
  -    UnShift(Index, ACount);
  +    ShiftLeft(Index, ACount);
     end;
   end;
   
  
positive.code:   end;
  end;
  
  procedure TArrayList.Shift(Index, N: Integer);
  begin
    if Index < FCount then begin
      System.Move(FList[Index], FList[Index + N],
  
negative.code:       raise EArrayListError.CreateResFmt(@SListIndexError, [Index]);
      N := Length(Container);
      Grow(N);
      ShiftRight(Index, N);
      Low := VarArrayLowBound(Container, 1);
      High := Low + N - 1;
      for I := Low to High do FList[Index + I] := Container[I];
  