anchor.diff:  	;
   
   class_method
  -	: method_qualifier* task_declaration
  -	| method_qualifier* function_declaration
  +	: method_qualifier* function_declaration
  +	| method_qualifier* task_declaration
   	| KW_PURE KW_VIRTUAL class_item_qualifier* method_prototype SEMI
   	| KW_EXTERN method_qualifier* method_prototype SEMI
  -	| method_qualifier* class_constructor_declaration
   	| KW_EXTERN method_qualifier* class_constructor_prototype
  +	;
  +
  +function_declaration
  +	: KW_FUNCTION lifetime? function_data_type_or_implicit function_name_qualifier? function_identifier
  +	  function_body_declaration
  +	  KW_ENDFUNCTION ( COLON function_identifier )?
  +	;
  +
  +function_name_qualifier
  +	: interface_identifier DOT
  +	| (package_scope parameter_value_assignment?)? (class_identifier parameter_value_assignment? COLON2)+
  +	;
  +
  +function_body_declaration
  +	: SEMI
  +	  tf_item_declaration*
  +	  function_statement_or_null*
  +	| LPAREN tf_port_list? RPAREN SEMI
  +	  block_item_declaration*
  +	  function_statement_or_null*
  +	;
  +
  +function_prototype
  +	: KW_FUNCTION function_data_type_or_implicit function_identifier ( LPAREN tf_port_list? RPAREN )?
  +	;
  +
  +function_data_type_or_implicit
  +	: data_type_or_void | implicit_data_type
   	;
   
   class_constructor_prototype
  
positive.code: method_prototype
  	: task_prototype
  	| function_prototype
  	;
  
  class_constructor_declaration
  	: KW_FUNCTION class_scope? KW_NEW (LPAREN tf_port_list? RPAREN)? SEMI
  	  block_item_declaration*
  	  (KW_SUPER DOT KW_NEW (LPAREN list_of_arguments RPAREN)? SEMI)?
  	  function_statement_or_null*
  	  KW_ENDFUNCTION (COLON KW_NEW)?
  	;
  
  constraint_declaration
  
negative.code: 	| dpi_import_export
  	| extern_constraint_declaration
  	| class_declaration
  	| local_parameter_declaration SEMI
  	| parameter_declaration SEMI
  	| covergroup_declaration
  