# File lib/rake.rb, line 499
499:     def invoke_with_call_chain(task_args, invocation_chain)
500:       new_chain = InvocationChain.append(self, invocation_chain)
501:       @lock.synchronize do
502:         if application.options.trace
503:           puts "** Invoke #{name} #{format_trace_flags}"
504:         end
505:         return if @already_invoked
506:         @already_invoked = true
507:         invoke_prerequisites(task_args, new_chain)
508:         execute(task_args) if needed?
509:       end
510:     end