TODO - version 0.29

	make corrections in examples: eg/weekly_to_html.pl and eg/month_to_html.pl 

	remove iterate ?

	make t/icalset.t

	test backtrack on:
		iterate
		compact
		no_cleanup

	document:
		new module 'ICalSet'
		new method 'compact'
		offset option 'mode=>circle'
		new method 'list'
		iterate
		no_cleanup

	change $backtrack_arg2 = $arg->quantize(@param)->union(); to span()

	cache quantize by month/day/...
	-- doesn't work if 'quant' is changed
	-- doesn't check 'intersects'

	ical.pl: enter data as epoch; translate on exit.
	use DTSTART as default hour, minute, ...

	sort by[] -- 0 1 2 ... freq-3 freq-2 freq-1

	ical.pl: BYWEEKNO WKST
	ical.pl: test bysetpos
	ical.pl: check behaviour when mixing rule parts (BYWEEKNO + BYYEARDAY);
	-- rule order matters:
	   If multiple BYxxx rule parts are specified, then after evaluating the
	   specified FREQ and INTERVAL rule parts, the BYxxx rule parts are
	   applied to the current set of evaluated occurrences in the following
	   order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR,
	   BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are evaluated.
	-- see end of 4.3.10 in RFC2445
	-- check how to integrate with DTSTART
	ical.pl: put UNTIL inside rrule
	ical.pl: where do DTSTART", "DTEND", "DUE", "EXDATE" and "RDATE" belong?
	better DURATION
	TZID

	This looks wrong - is it?
	   "FREQ=YEARLY;BYMONTH=1,2" increases the number of days within the
	   yearly recurrence set from 1 (if BYMONTH tag is not present) to 2.

	'select' switch for negative-index overflow behaviour (end of subset, or end of freq)
	tests: add test for negative 'by'

	negative values in select should count backwards from end
	-- test! insert debug -- ical.pl 134 should show 2001-09-30

	remove 'interval' option from select

	make a 'flush'-cache method. Make a 'cache-registry'.

	document '->trace({options})->' method

	find a better (bigger span) gmtime/timegm

	'iterate' options 'no-sort', 'no-merge', 'keep-null' ...

	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 - 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
	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

	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. 

	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  

	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

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

	check: POD formatting 

	check: RFC2445 support completeness

	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: 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
