4: Similarly with a job queue, grab the job classads, and suck them into a program which instantiates classads for each job in the text file. (Magnify as needed). Check memory footprint; compare b/w new and old classads.
 *:: _Nick_ *Done*
 
+{subsection: Analyze data, determine whether to procede or not}
+
+*: Monday, June 1, 2009
+
 {subsection: Conversion}
-{wiki:ClassAdConversionTimeDetailedEstimates Detailed time estimates} are also available.
+{wiki:ClassAdConversionTimeDetailedEstimates Detailed time estimates for individual {quote:ClassAd} methods} are also available.  {wiki:ClassAdConversionTodo The ClassAd conversion TODO} has more details on these individual blocks.
+
+{subsubsection: Pre-Flag Day Tasks}
+
+*: Compatibility functions block 1:
+*:: ClassAd::Assign() *DONE*
+*:: ClassAd::LookupString(MyString) *DONE*
+*:: ClassAd::Insert(const char*) *DONE*
+*:: ClassAd::put()
+*:: ClassAd::initFromStream()
+*:: ClassAd::AssignExpr() *DONE*
+*:: ClassAd::clear() *DONE*
+*:: ClassAd::EvalString(const char*, const class AttrList*, char**)
+*:: ClassAd::EvalString(const char*, const class AttrList*, MyString&)
+*:: ClassAd::NextNameOriginal() *DONE*
+*:: ClassAd::ResetName() *DONE*
+*:: ClassAd::sPrintExpr()
+*:: ClassAd::NextDirtyExpr()
+*:: ClassAd::SetDirtyFlag()
+*:: ClassAd::GetDirtyFlag()
+*:: ClassAd::GetReferences()
+*:: ClassAd::ChainCollapse()
+*:: ClassAd::EscapeStringValue()
+*:: ClassAd::CopyAttribute()
+*:: ClassAd::fPrintAsXML()
+*:: ClassAd::sPrintAsXML()
+*:: ClassAd::IsValidAttrValue()
+*: Write helper functions for these methods which we can't emulate transparently:
+*:: ExprTree::PrintToNewStr() *DONE*
+*:: ExprTree::PrintToStr() *DONE*
+*:: ExprTree::EvalTree()
+*: Add {quote:ClassAds} functions that are in old {quote:ClassAds} but not in new {quote:ClassAds}:
+*:: stringListSize()
+*:: stringListSum()
+*:: stringListAve()
+*:: stringListMin()
+*:: stringListMax()
+*:: stringListMember()
+*:: stringListIMember()
+*:: stringListRegexpMember()
+
+
+{subsection: Flag Day Tasks}
+
+*: Change most or all references to {quote:ClassAd} and {quote:AttrList} with {quote:CompatClassAd}.
+*: Swap in Varghese's new {quote:ClassAdList} class.
+*: Fix up the one or two callsites in matchmaker.cpp that move an ad from one {quote:ClassAdList} to another.
+*: The following methods will need some fixing at the callsites:
+*:: ClassAd::Insert(ExprTree*)
+*:: ClassAd::Lookup()
+*:: ExprTree::RArg()
+*:: ExprTree::LArg()
+*:: ExprTree::PrintToNewStr()
+*:: ExprTree::EvalTree()
+*:: ClassAd::NextExpr()
+*:: ClassAd(char*,char)
+*:: ExprTree::PrintToStr()
+*:: ExprTree::DeepCopy()
+*:: ExprTree::MyType()
+*:: ClassAd::ExchangeExpressions() *DONE*
+*:: ClassAd::unchain() *DONE*
+*:: ClassAd::RestoreChain() *DONE*
+*:: AttrList::put()
+
+{subsection: Post-Flag Day Tasks}
+
+*: As time permits, rewrite callsites to make {quote:CompatClassAd} unnecessary. The modified callsites can either use native new {quote:ClassAd} methods or newly-written free-standing functions.
+*:: Replace all usage of attribute {quote:CurrentTime} with {quote:ClassAd} function time(). This can start before the flag day.