PLUGIN array
DEFINE
	OPTION array.wrap -w BLN
	INTERRUPTION array.out_of_range
	INSTRUCTION array.append MUTABLE PTR:array ( INT:size | { VALUE + }:values ) -> PTR
	INSTRUCTION array.insert MUTABLE PTR:array INT:index ( INT:size | { VALUE + }:values ) -> PTR
	INSTRUCTION array.erase MUTABLE PTR:array INT:index INT:size
	INSTRUCTION array.sub PTR:array INT:index INT:size -> PTR
	INSTRUCTION array.copy PTR:array -> PTR:copy
	INSTRUCTION array.print PTR:array -> STR
	INSTRUCTION array.update PTR:array ( PEP:function INT:element ? { . * } | [ STR SYM ]:function { VALUE * } )
	INTERRUPTION array.invalid_return
	INSTRUCTION array.map PTR:array ( PEP:function INT:element ? { . * } | [ STR SYM ]:function { VALUE * } ) -> PTR
	INSTRUCTION array.accumulate PTR:array ( PEP:function ( INT:element INT:accumulator ) ? { . * } VALUE:init | [ STR SYM ]:function { VALUE * } PTR:accumulator ) -> [ VALUE PTR ]
	INSTRUCTION array.filter PTR:array PEP:predicate INT:index ? { . * } -> PTR
	INSTRUCTION array.sort PTR:array PEP:comparator ( INT:left INT:right ) ? { . * } -> PTR
