A survey and categorization of program comprehension techniques