PLUGIN bit
DEFINE
	TYPE bit.set
	INTERRUPTION bit.size_mismatch
	INTERRUPTION bit.out_of_range
	INSTRUCTION bit.set [ INT STR ]:size_or_bits -> bit.set
	INSTRUCTION bit.string bit.set -> STR
	INSTRUCTION bit.format bit.set STR:false STR:true ( INT:block STR:separator ) ? -> STR
	INSTRUCTION bit.check bit.set INT:index -> BLN
	INSTRUCTION bit.modify MUTABLE bit.set INT:index [ BLN 'SWAP' ]:value
	INSTRUCTION bit.pattern MUTABLE bit.set ( PTR | BLN + )
	INSTRUCTION bit.size bit.set -> INT
	INSTRUCTION bit.count bit.set -> INT
	INSTRUCTION bit.empty bit.set -> BLN
	INSTRUCTION bit.index bit.set -> PTR
	INSTRUCTION bit.shift bit.set INT:shift -> bit.set
	INSTRUCTION bit.rotate bit.set INT:shift -> bit.set
	INSTRUCTION bit.not bit.set -> bit.set
	INSTRUCTION bit.all bit.set bit.set + -> bit.set
	INSTRUCTION bit.any bit.set bit.set + -> bit.set
	INSTRUCTION bit.operation [ = <> < <= > => ]:operation INT:threshold ( PTR | bit.set bit.set + ) -> bit.set
	INSTRUCTION bit.cmp bit.set [ = <> ] bit.set -> BLN
	FUNCTION bit.map MUTABLE bit.set PEP:function . *:parameters
	INSTRUCTION bit.map MUTABLE bit.set PEP:function . *:parameters
