int flags = get_access_flags_from_decl (current_function_decl);   if ((flags & ACC_ABSTRACT || flags & ACC_NATIVE) && method_body) { tree wfl = DECL_NAME (current_function_decl); parse_error_context (wfl, "%s method `%s' can't have a body defined", (METHOD_NATIVE (current_function_decl) ? "Native" : "Abstract"), IDENTIFIER_POINTER (EXPR_WFL_NODE (wfl))); method_body = NULL_TREE; } else if (!(flags & ACC_ABSTRACT) && !(flags & ACC_NATIVE) && !method_body) { tree wfl = DECL_NAME (current_function_decl); parse_error_context (wfl, "Non native and non abstract method `%s' must " "have a body defined", IDENTIFIER_POINTER (EXPR_WFL_NODE (wfl))); method_body = NULL_TREE; }
finish_method_declaration (method_body)     tree method_body;{  BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (current_function_decl)) = method_body;  maybe_absorb_scoping_blocks ();  /* Exit function's body */  exit_block ();  /* Merge last line of the function with first line, directly in the     function decl. It will be used to emit correct debug info. */  if (!flag_emit_xref)    DECL_SOURCE_LINE_MERGE (current_function_decl, ctxp->last_ccb_indent1);  /* So we don't have an irrelevant function declaration context for     the next static block we'll see. */  current_function_decl = NULL_TREE;}