﻿class System.Collections.Generic.List<T> System.Collections.List : IList<T>  
	arrayitemtype T
	java java.util.ArrayList
	python list
	js Array
	php service MyList
	rust service NList
	rustref service NListRef
    rustprim service NListPrim


property get int Capacity
	java Utils.getCapacity({!})
property set int Capacity
	java {!}.ensureCapacity({0})

.ctor()
	java =
	python hardcode ListCtorPython
	js =
	php =
	rust NList::new()
	rustref NListRef::new() 
	rustprim NListPrim::new() 

.ctor(IEnumerable<T>)
	java hardcode ListCtorCollectionJava
	python hardcode ListCtorCollectionPython
	js Array.from({0})
	php MyList::CreateFrom({0})
	rustref NListRef::from_list({0&})
	rustprim NListPrim::from_list({0&})

.ctor(int)
	java =
	python hardcode ListCtorPython
	js new Array()
	php new MyList()
	rust NList::with_capacity({0})
	rustref NListRef::with_len({0})
	rustprim NListPrim::with_len({0})


method T[] ToArray()
	java hardcode ListToArrayJava
	python hardcode ListToArrayPython
	php =ToArray
	js {!}

method void AddRange(IEnumerable<T>) changelength
	java Utils.addToArrayList({!}, {0})
	python =extend
	php =AddRange
	js {!}.splice({!}.length, 0, ...{0})
	rust {!}.add_range({0*})
	rustref {!}.add_range({0&})
	rustprim {!}.add_range({0&})

method void InsertRange(int, IEnumerable<T>) changelength
	java Utils.insertToArrayList({!}, {1}, {0})
	python {!}[{0}:{0}] = {1}
	php =InsertRange
	js {!}.splice({0}, 0, ...{1})
	rust {!}.insert_range({0}, {1*})
	rustref {!}.insert_range({0}, {1&})
	rustprim {!}.insert_range({0}, {1&})

method void RemoveRange(int, int) changelength
	java for(int jjj = {0} + {1} - 1, mmm = {0}; jjj >= mmm; jjj--) {!}.remove(jjj)
	python del {!}[{0}:{0}+{1}]
	js {!}.splice({0}, {1})
	php =RemoveRange
	rust =remove_range


method void Reverse() changelength
	java java.util.Collections.reverse({!})
	python =reverse
	js =reverse
	php =Reverse

method void Sort() changelength
	java java.util.Collections.sort({!})
	python hardcode ListSortPython
	js hardcode ListSortJS
	php hardcode ListSortPHP

method void Sort(IComparer<T>) changelength
	java =sort
	python hardcode ListSortPython
	php hardcode ListSortPHP
	js hardcode ListSortJS


method void ForEach(Action<T>)
	java Utils.forEachList({!}, {0})

method List<T> FindAll(Predicate<T>)
	java Utils.findAllList({!}, {0})

method T Find(Predicate<T>)
	java Utils.findList({!}, {0})

method T FindLast(Predicate<T>)
	java Utils.findLastList({!}, {0})

method bool Exists(Predicate<T>)
	java Utils.existsList({!}, {0})

method bool TrueForAll(Predicate<T>)
	java Utils.trueForAllList({!}, {0})

method int FindIndex(Predicate<T>)
	java Utils.findIndexList({!}, {0}, 0, 0)

method int FindIndex(int, Predicate<T>)
	java Utils.findIndexList({!}, {1}, {0}, 0)

method int FindIndex(int, int, Predicate<T>)
	java Utils.findIndexList({!}, {2}, {0}, {1})

method int FindLastIndex(Predicate<T>)
	java Utils.findLastIndexList({!}, {0}, 0, 0)

method int FindLastIndex(int, Predicate<T>)
	java Utils.findLastIndexList({!}, {1}, {0}, 0)

method int FindLastIndex(int, int, Predicate<T>)
	java Utils.findLastIndexList({!}, {2}, {0}, {1})
