TODO - version 0.25

	check for negative-epoch errors (quantize, select, offset).

	document: quantize extensibility through hash-subs

	backtracking select - see '	# (TODO) ???? ' in Infinite.pm, backtrack.t

	backtracking: should be extensible. Use tables instead of if-else
	backtracking: change ->{method} to sub-pointer instead of string ?
	backtracking: define 'backwards' method instead of if-else (near 3-08)

	backtracking: define union, complement, contains...

	backtracking: implement remaining tests in backtrack.t
	verify results in backtrack.t
	ok - change backtrack.t to real tests

	ok - backtracking quantize should round up and down values, according to unit, quant.
		-- check if this is really necessary!
		-- try using span, or create result directly (faster)
		-- or: use 'offset' instead
	ok - backtracking offset should move up and down values, according to value, mode.
	backtracking select should move up and down values, according to 'by' limits.
	See: backtrack.t in 'partially null "date"'

	backtracking: document backtracking resolution; document internal object data (partially done)

	remove a lot of debug "print" lines

	verify, document parameter syntax everywhere
	make 'freq' work with 'days', etc.

	make unit 'years' and 'months' work in 'offset'

	extra: make offset accept ICal times

	change recurring.pl because offset supports 'Date' hours

	extra: offset option "middle"

	extra: "indexes" filter to help dealing with sparse lists:
	(,,10,,12,,14,,,)->indexes gives (2,4,6)

	extra: caching for the filters. Try "Memoize".

	internal: it may be good to have a pointer to the "root" object
	in the filters. Thay already have a "parent" pointer.

	think about: caching for union, etc  

	check: english: "infinite" x "infinity"

	think about: "push-pop", "dup", "drop" mechanism

	think about: some "if-else" mechanism

	extra: wrappers (like: weekday('thursday') )
	some tough cases: yearweek(10) monthweek(2)

	extra: multiple offset (like: two days in month) 

	oo: provide a general filter "install" mechanism (quantize, select, etc)
	check: cleanup "type" hack

	tie: make "virtual" union, etc ? -- would be new filters

	oo-date: check for extensibility

	extra: make work with -inf, inf : quantize, select, offset 

	extra: syntax for quantize: ...->quantize('years')

	correction: Date::sub -> propagate "mode"

	check: POD formatting 

	check: RFC2445 support completeness

	doc: "select" options: 
	  "quantize" output processors, for RFC2445 processing:
	FREQ=YEARLY
		->quantize( unit=>'years' )

		Interval(-inf .. inf) ->quantize( unit=>'years')
		- would be a runtime error because 
		Quantize->new needs a "base", and -inf does not work.
		- unless we don't instantiate ?

	INTERVAL=4
		...->quantize('years',1)->select(freq => 4)
		"Each four years, starting in the first year"
		...->quantize('years',1)->select(freq=>4,by=>[3])
		"Each four years, starting in the third year"
	BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4
		$tmp = $a->quantize('years',1)->offset( .. 'begin', 11 months ... );
		$thursdays = ...weeks .. offset ..;
		$days = ...->select( .. by=>[1,2,3] ...);
		$result = $thursdays->intersection($days);

	FREQ=MONTHLY;COUNT=3
		rewrite this: 
		  ...->freq('months',3)
	FREQ=MINUTELY;INTERVAL=15;COUNT=6
		rewrite this: 
		  ...->freq('minutes',15 * 6)->freq('minutes',1)->interval(0,15)->
		  Needs a lot of pre-processing to generate "freq('minutes',15 * 6)"!
	BYSETPOS=-2
		write about this
	WKST
		write about this	
	UNTIL=19970902T170000Z
		->intersect( -inf .. "19970902T170000Z" )

	extra: Keep a pointer to object in "quantize", such that, if the object is changed,
	"quantize" will re-initialize. 
	Make a "object_modified" flag in "quantize",
	that the object should point back to. Sort of a signal handler.

	extra: Make a 'strict' option for "quantize" and other filters, 
	that will intersect
	each unit back to the object, that is:
	Interval:                     [************************]
	Quantized:                [*********)[*********)[*********)
	Quantized->Stricted:          [*****)[*********)[******]

	old: Make a global mode for `open_*' 

	old: Create a `dirty' variable so it knows when to cleanup.

	old: use `isa' to test parameter types
	old, oo: use __PACKAGE__ everywhere

	old: correct syntax problems due to accepting ( [ 1 .. 10 ] ) as input - see POD.

	old: fix Bigfloat tests

	old: Quantize_Date should care of daylight savings time

