Carve four new modules out of prog_item.m. compiler/prog_item_type.m: New module containing the parts of prog_item.m dealing with type definitions. compiler/prog_item_inst_mode.m: New module containing the parts of prog_item.m dealing with insts and mode definitions. compiler/prog_item_pragma.m: New module containing the parts of prog_item.m dealing with pragmas. compiler/prog_item_pred_proc_id.m: New module containing the parts of prog_item.m dealing with identifying predicates and procedures (by name, not by number). compiler/prog_item.m: Delete the moved code. Also delete an unused type. compiler/parse_tree.m: compiler/notes/compiler_design.html: Include and document the new modules. configure.ac: Require the installed compiler to NOT check subtype definitions that occur in .int2 files. Without this fix, the compilation of many modules in the compiler will incorrectly report the following error, due to the definitions of the two mentioned types from prog_item_pred_proc_id.m not being visible: parse_tree.prog_item_pragma.int2:216: Error: the second argument of parse_tree.prog_item_pragma.int2:216: `item_decl_marker_info' has a type, parse_tree.prog_item_pragma.int2:216: `parse_tree.prog_item_pred_proc_id.pred_pfu_name_arity_pf', parse_tree.prog_item_pragma.int2:216: which is not a subtype of the parse_tree.prog_item_pragma.int2:216: corresponding argument type parse_tree.prog_item_pragma.int2:216: `parse_tree.prog_item_pred_proc_id.pred_pfu_name_arity' parse_tree.prog_item_pragma.int2:216: in the supertype. compiler/*.m: Adjust imports as needed.