Task Analysis: Algorithm: 1. Obtain the flags for each class in the program(Incase, a class has a super class, the super's flags, if any, are included in the list of flags for the class) 2. Create a new flagstate for the StartupObject class with the initialstate flag set to true. Append this flagstate to the queue, QMAIN. 3. Pop the head of QMAIN and use this flagstate FS to evaluate which task triggers on this. 4. Add all runtime transitions (external flag changes) from FS to QMAIN and ADJLIST(as edges from FS) ensuring that the new states don't exist in QMAIN. 5. Iterate through the list of tasks using FS. 6. If a task is triggered, a. If FS satisfies more than one parameter of the task, throw an error stating that this is an illegal operation. b. If 6a is not true, then add a transition for this task to FS using step 7. Before performing step 7, make sure that the task doesn't already exist as a transition to FS. Keep track of the temp (as TEMP) whose flags form the triggering flagstate. 7. Search through the FFANS in this task: a. For NewObject node, i. If the new object is of a class which has both types of flags, create the new flagstate and append to QMAIN. Set its set of transitions to the empty set. b. For the task exit node, apply the flag changes to the tempflag pairs corresponding to TEMP and create the new flagstate. Add this state along with the task as an Edge to FS in the FS transition set. Add the state to QMAIN. c. For the PRE node, throw an error stating that this type of node isn't supported anymore in Bristlecone. 8. Repeat steps 3-7 until QMAIN is empty.