Java_parsing.AstSourcetype name_attribute = | NApackage| NAtype of resolve_result| NAexpression of expr_kind| NAmethod| NApackageOrType| NAstatic of resolve_result| NAambiguous of resolve_result| NAunknownand name_desc = | Nsimple of name_attribute ref * identifier| Nqualified of name_attribute ref * name * annotation list * identifier| Nerror of stringand javatype_desc = | Tprimitive of annotation list * primitive_type| TclassOrInterface of type_spec list| Tclass of type_spec list| Tinterface of type_spec list| Tarray of javatype * annot_dim list| Tvoidand type_spec = | TSname of annotation list * name| TSapply of annotation list * name * type_argumentsand formal_parameter = {fp_modifiers : modifiers option;fp_type : javatype;fp_variable_declarator_id : variable_declarator_id;fp_variable_arity : bool;fp_loc : loc;fp_receiver : identifier option;}and modifier_desc = | Mpublic| Mprotected| Mprivate| Mstatic| Mabstract| Mfinal| Mnative| Msynchronized| Mtransient| Mvolatile| Mstrictfp| Mannotation of annotation| Mdefault| Mtransitive| Msealed| Mnon_sealed| Merror of stringand variable_initializer_desc = | VIexpression of expression| VIarray of array_initializer| VIerror of stringand variable_declarator = {vd_variable_declarator_id : variable_declarator_id;vd_variable_initializer : variable_initializer option;vd_is_local : bool ref;vd_loc : loc;}and class_declaration_head = {ch_modifiers : modifiers option;ch_identifier : identifier;ch_identifier_loc : loc;ch_type_parameters : type_parameters option;ch_extends_class : extends_class option;ch_implements : implements option;ch_permits : permits option;ch_loc : loc;}and record_declaration_head = {rh_modifiers : modifiers option;rh_identifier : identifier;rh_identifier_loc : loc;rh_type_parameters : type_parameters option;rh_record_header : formal_parameter list;rh_implements : implements option;rh_loc : loc;}and module_declaration = {mod_head : module_declaration_head;mod_body : module_body;mod_loc : loc;}and module_declaration_head = {mdh_annotations : annotation list;mdh_open : loc option;mdh_name : name;mdh_loc : loc;}and module_directive_desc = | MDrequires of modifier list * name| MDexports of name * module_name list| MDopens of name * module_name list| MDuses of name| MDprovides of name * module_name listand class_declaration_desc = | CDclass of class_declaration_head * class_body| CDenum of class_declaration_head * enum_body| CDrecord of record_declaration_head * record_body| CDaspect of class_declaration_head * aspect_bodyand type_parameter = {tp_type_variable : type_variable;tp_annotations : annotation list;tp_type_bound : type_bound option;tp_loc : loc;}and type_bound = {tb_reference_type : javatype;tb_additional_bounds : additional_bound list;tb_loc : loc;}and enum_body = {eb_enum_constants : enum_constant list;eb_class_body_declarations : class_body_declaration list;eb_loc : loc;}and enum_constant = {ec_annotations : annotations;ec_identifier : identifier;ec_arguments : arguments option;ec_class_body : class_body option;ec_loc : loc;}and class_body_declaration_desc = | CBDfield of field_declaration| CBDmethod of method_header * block option| CBDclass of class_declaration| CBDinterface of interface_declaration| CBDstaticInitializer of block| CBDinstanceInitializer of block| CBDconstructor of constructor_declaration| CBDempty| CBDerror of string| CBDpointcut of pointcut_declaration| CBDdeclare of declare_declarationand record_body_declaration_desc = | RBDclass_body_decl of class_body_declaration| RBDcompact_ctor_decl of compact_constructor_declarationand declare_declaration_desc = | DDparents of string
* classname_pattern_expr
* extends_class option
* implements option| DDmessage of string * pointcut_expr * primary| DDsoft of string * pointcut_expr| DDprecedence of string * classname_pattern_expr listand pointcut_declaration = {pcd_modifiers : modifiers option;pcd_name : identifier;pcd_parameters_loc : loc;pcd_parameters : formal_parameter list;pcd_pointcut_expr : pointcut_expr option;pcd_loc : loc;}and pointcut_expr_desc = | PEand of pointcut_expr * pointcut_expr| PEor of pointcut_expr * pointcut_expr| PEnot of pointcut_expr| PEparen of pointcut_expr| PEwithin of classname_pattern_exprand classname_pattern_expr_desc = | CPEand of classname_pattern_expr * classname_pattern_expr| CPEor of classname_pattern_expr * classname_pattern_expr| CPEnot of classname_pattern_expr| CPEparen of classname_pattern_expr| CPEname of string| CPEnamePlus of stringand field_declaration = {fd_modifiers : modifiers option;fd_type : javatype;fd_variable_declarators : variable_declarators;fd_loc : loc;}and method_header = {mh_modifiers : modifiers option;mh_type_parameters : type_parameters option;mh_annotations : annotation list;mh_return_type : javatype;mh_name : identifier;mh_name_loc : loc;mh_parameters_loc : loc;mh_parameters : formal_parameter list;mh_dims : annot_dim list;mh_throws : throws option;mh_loc : loc;}and constructor_declaration = {cnd_modifiers : modifiers option;cnd_type_parameters : type_parameters option;cnd_name : simple_name;cnd_parameters_loc : loc;cnd_parameters : formal_parameter list;cnd_throws : throws option;cnd_body : constructor_body;cnd_loc : loc;}and compact_constructor_declaration = {ccnd_modifiers : modifiers option;ccnd_name : identifier;ccnd_body : constructor_body;ccnd_loc : loc;}and constructor_body = {cnb_explicit_constructor_invocation : explicit_constructor_invocation option;cnb_block : block_statement list;cnb_loc : loc;}and explicit_constructor_invocation = {eci_desc : explicit_constructor_invocation_desc;eci_loc : loc;}and explicit_constructor_invocation_desc = | ECIthis of type_arguments option * arguments| ECIsuper of type_arguments option * arguments| ECIprimary of primary * type_arguments option * arguments| ECIname of name * type_arguments option * arguments| ECIerror of stringand interface_declaration_head = {ifh_modifiers : modifiers option;ifh_identifier : identifier;ifh_type_parameters : type_parameters option;ifh_extends_interfaces : extends_interfaces option;ifh_permits : permits option;ifh_loc : loc;}and interface_declaration_desc = | IFDnormal of interface_declaration_head * interface_body| IFDannotation of interface_declaration_head * annotation_type_bodyand annotation_type_body = {atb_member_declarations : annotation_type_member_declaration list;atb_loc : loc;}and annotation_type_member_declaration = {atmd_desc : annotation_type_member_declaration_desc;atmd_loc : loc;}and annotation_type_member_declaration_desc = | ATMDconstant of constant_declaration| ATMDelement of modifiers option
* javatype
* identifier
* annot_dim list
* default_value option| ATMDclass of class_declaration| ATMDinterface of interface_declaration| ATMDemptyand interface_body = {ib_member_declarations : interface_member_declaration list;ib_loc : loc;}and interface_method_declaration = {amd_method_header : method_header;amd_body : block option;amd_loc : loc;}and interface_member_declaration = {imd_desc : interface_member_declaration_desc;imd_loc : loc;}and interface_member_declaration_desc = | IMDconstant of field_declaration| IMDinterfaceMethod of interface_method_declaration| IMDclass of class_declaration| IMDinterface of interface_declaration| IMDemptyand block_statement_desc = | BSlocal of local_variable_declaration| BSclass of class_declaration| BSstatement of statement| BSerror of stringand local_variable_declaration = {lvd_modifiers : modifiers option;lvd_type : javatype;lvd_variable_declarators : variable_declarators;lvd_loc : loc;}and statement_desc = | Sblock of block| Sempty| Sexpression of statement_expression| Sswitch of expression * switch_block| Sdo of statement * expression| Sbreak of identifier option| Scontinue of identifier option| Sreturn of expression option| Ssynchronized of expression * block| Sthrow of expression| Stry of resource_spec option * block * catches option * finally option| Syield of expression| Slabeled of identifier * statement| SifThen of expression * statement| SifThenElse of expression * statement * statement| Swhile of expression * statement| Sfor of for_init option
* expression option
* statement_expression list
* statement| SforEnhanced of formal_parameter * expression * statement| Sassert1 of expression| Sassert2 of expression * expression| Serror of stringand statement_expression_desc = | SEassignment of assignment| SEpreIncrement of expression| SEpreDecrement of expression| SEpostIncrement of expression| SEpostDecrement of expression| SEmethodInvocation of method_invocation| SEclassInstanceCreation of class_instance_creation| SEerror of stringand for_init_desc = | FIstatement of statement_expression list| FIlocal of local_variable_declarationand primary_desc = | Pname of name| Pliteral of literal| PclassLiteral of javatype| PclassLiteralVoid| Pthis| PqualifiedThis of name| Pparen of expression| PclassInstanceCreation of class_instance_creation| PfieldAccess of field_access| PmethodInvocation of method_invocation| ParrayAccess of array_access| ParrayCreationExpression of array_creation_expression| PmethodReference of method_reference| Perror of stringand method_reference_desc = | MRname of name * type_arguments option * identifier| MRprimary of primary * type_arguments option * identifier| MRsuper of type_arguments option * identifier| MRtypeSuper of name * type_arguments option * identifier| MRtypeNew of javatype * type_arguments optionand class_instance_creation_desc = | CICunqualified of type_arguments option
* javatype
* arguments
* class_body option| CICqualified of primary
* type_arguments option
* identifier
* type_arguments option
* arguments
* class_body option| CICnameQualified of name
* type_arguments option
* identifier
* type_arguments option
* arguments
* class_body optionand field_access = | FAprimary of primary * identifier| FAsuper of identifier| FAclassSuper of name * identifier| FAimplicit of nameand method_invocation_desc = | MImethodName of name * arguments| MIprimary of primary * type_arguments option * identifier * arguments| MItypeName of name * type_arguments option * identifier * arguments| MIsuper of loc * type_arguments option * identifier * arguments| MIclassSuper of loc
* loc
* name
* type_arguments option
* identifier
* argumentsand expression_desc = | Eprimary of primary| Eunary of unary_operator * expression| Ebinary of binary_operator * expression * expression| Ecast of javatype * expression| Einstanceof of expression * javatype| EinstanceofP of expression * local_variable_declaration| Econd of expression * expression * expression| Eassignment of assignment| Elambda of lambda_params * lambda_body| Eswitch of expression * switch_block| Eerror of stringand lambda_params_desc = | LPident of identifier| LPformal of formal_parameter list| LPinferred of (loc * identifier) listand annotation_desc = | Anormal of name * element_value_pair list| Amarker of name| AsingleElement of name * element_valueand element_value_desc = | EVconditional of expression| EVannotation of annotation| EVarrayInit of element_value listand switch_block = {sb_switch_block_stmt_grps : switch_block_stmt_grp list;sb_switch_rules : switch_rule list;sb_loc : loc;}and catch_formal_parameter = {cfp_modifiers : modifiers option;cfp_type_list : javatype list;cfp_variable_declarator_id : variable_declarator_id;cfp_loc : loc;}and resource_desc = | RlocalVarDecl of local_variable_declaration| RfieldAccess of field_access| Rname of nameand type_declaration_desc = | TDclass of class_declaration| TDinterface of interface_declaration| TDempty| TDerror of string| TDorphan of type_declaration option * class_body_declarationtype compilation_unit = {cu_package : package_declaration option;cu_imports : import_declaration list;cu_tydecls : type_declaration list;cu_modecl : module_declaration option;}val proc_annotation_type_member_declaration :
(name -> unit) ->
annotation_type_member_declaration ->
unitval proc_interface_member_declaration :
(name -> unit) ->
interface_member_declaration ->
unitval proc_interface_method_declaration :
(name -> unit) ->
interface_method_declaration ->
unitval proc_explicit_constructor_invocation :
(name -> unit) ->
explicit_constructor_invocation ->
unitval partition_declarations :
declaration list ->
import_declaration list * type_declaration list