Методы расширения списков

function AdjacentFind<T>(Self: IList<T>; start: integer := 0): integer;
        Находит первую пару подряд идущих одинаковых элементов и возвращает индекс первого элемента пары. Если не найден, возвращается -1
function AdjacentFind<T>(Self: IList<T>; eq: (T,T)->boolean; start: integer := 0): integer;
        Находит первую пару подряд идущих одинаковых элементов, используя функцию сравнения eq, и возвращает индекс первого элемента пары. Если не найден, возвращается -1
function Fill<T>(Self: List<T>; x: T): List<T>;
        Заполняет элементы списка указанным значением
function Fill<T>(Self: List<T>; f: integer->T): List<T>;
        Заполняет элементы списка значениями, вычисляемыми по некоторому правилу
function IndexMax<T>(Self: List<T>; index: integer := 0): integer; where T: IComparable<T>;
        Возвращает индекс первого максимального элемента начиная с позиции index
function IndexMaxBy<T, TKey>(Self: array of T; keySelector: T -> TKey): integer;
        Возвращает индекс первого элемента с максимальным значением ключа
function IndexMin<T>(Self: List<T>; index: integer := 0): integer; where T: IComparable<T>;
        Возвращает индекс первого минимального элемента начиная с позиции index
function IndexMinBy<T, TKey>(Self: array of T; keySelector: T -> TKey): integer;
        Возвращает индекс первого элемента с минимальным значением ключа
function Indices<T>(Self: List<T>): sequence of integer;
        Возвращает последовательность индексов списка
function Indices<T>(Self: List<T>; cond: T->boolean): sequence of integer;
        Возвращает последовательность индексов элементов списка, удовлетворяющих условию
function Indices<T>(Self: List<T>; cond: (T,integer) ->boolean): sequence of integer;
        Возвращает последовательность индексов элементов списка, удовлетворяющих условию
function LastIndexMax<T>(Self: List<T>; index: integer): integer; where T: IComparable<T>;
        Возвращает индекс последнего минимального элемента в диапазоне [0,index-1]
function LastIndexMax<T>(Self: List<T>): integer; where T: IComparable<T>;
        Возвращает индекс последнего максимального элемента
function LastIndexMaxBy<T, TKey>(Self: array of T; keySelector: T -> TKey): integer;
        Возвращает индекс последнего элемента с максимальным значением ключа
function LastIndexMin<T>(Self: List<T>; index: integer): integer; where T: IComparable<T>;
        Возвращает индекс последнего минимального элемента в диапазоне [0,index-1]
function LastIndexMin<T>(Self: List<T>): integer; where T: IComparable<T>;
        Возвращает индекс последнего минимального элемента
function LastIndexMinBy<T, TKey>(Self: array of T; keySelector: T -> TKey): integer;
        Возвращает индекс последнего элемента с минимальным значением ключа
function RandomElement<T>(Self: List<T>): T;
        Возвращает случайный элемент списка
function RemoveLast<T>(Self: List<T>): List<T>;
        Удаляет последний элемент. Если элементов нет, генерирует исключение
function Replace<T>(Self: List<T>; oldValue, newValue: T): List<T>;
        Заменяет в списке все вхождения одного значения на другое
function Shuffle<T>(Self: List<T>): List<T>;
        Перемешивает элементы списка случайным образом
function Slice<T>(Self: List<T>; from, step: integer): List<T>;
        Возвращает срез списка от индекса from с шагом step
function Slice<T>(Self: List<T>; from, step, count: integer): List<T>;
        Возвращает срез списка от индекса from с шагом step длины не более count
function Swap<T>(Self: List<T>; i, j: integer): List<T>;
        Меняет местами элементы списка с индексами i и j
function Transform<T>(Self: List<T>; f: T->T): List<T>;
        Преобразует элементы массива или списка по заданному правилу
function Transform<T>(Self: List<T>; f: (T,integer)->T): List<T>;
        Преобразует элементы массива или списка по заданному правилу