anchor.diff:          .Execute(acTerminate);
   
         ActualizeExitCode(Result);
  -      PrintLn(Format(RSTotalDuration, [String(FWorkflowState.TotalDuration)])); // TODO: replace with a log output
  +      Log.InfoFmt(RSTotalDuration, [String(FWorkflowState.TotalDuration)]);
       except
         Exception.RaiseOuterException(EApplicationExecutionFailed.Create);
       end;
  +
  +  Log.LeaveMethod(TFIToolkit, @TFIToolkit.Run, Result);
   end;
   
   procedure TFIToolkit.SetLogFile;
   var
     LogFileOption : TCLIOption;
   begin
  +  Log.EnterMethod(TFIToolkit, @TFIToolkit.SetLogFile, []);
  +
     if FOptions.Find(STR_CLI_OPTION_LOG_FILE, LogFileOption, not IsCaseSensitiveCLIOption(STR_CLI_OPTION_LOG_FILE)) then
  +  begin
  +    Log.DebugFmt('LogFileOption.Value = "%s"', [LogFileOption.Value]);
  +
       if TPath.IsApplicableFileName(LogFileOption.Value) then
         InitFileLog(LogFileOption.Value);
  +  end;
  +
  +  Log.LeaveMethod(TFIToolkit, @TFIToolkit.SetLogFile);
   end;
   
   procedure TFIToolkit.SetNoExitBehavior;
  
positive.code:   NoExitOption : TCLIOption;
    iValue : Integer;
  begin
    if FOptions.Find(STR_CLI_OPTION_NO_EXIT, NoExitOption, not IsCaseSensitiveCLIOption(STR_CLI_OPTION_NO_EXIT)) then
      if Integer.TryParse(NoExitOption.Value, iValue) then
        if InRange(iValue, Integer(Low(TNoExitBehavior)), Integer(High(TNoExitBehavior))) then
          FNoExitBehavior := TNoExitBehavior(iValue);
  end;
  
  end.
  
negative.code:   finally
      RS.Free;
    end;
  
    Log.LeaveMethod(TFIToolkit, @TFIToolkit.PrintHelp);
  end;
  
  class procedure TFIToolkit.PrintHelpSuggestion(const FullExePath : TFileName);
  begin
    Log.EnterMethod(TFIToolkit, @TFIToolkit.PrintHelpSuggestion, [FullExePath]);
  
    PrintLn(Format(RSHelpSuggestion,
      [TPath.GetFileName(FullExePath) + STR_CLI_OPTIONS_DELIMITER + STR_CLI_OPTION_PREFIX + STR_CLI_OPTION_HELP]));
  
    Log.LeaveMethod(TFIToolkit, @TFIToolkit.PrintHelpSuggestion);
  end;
  
  procedure TFIToolkit.PrintVersion;
  begin
    Log.EnterMethod(TFIToolkit, @TFIToolkit.PrintVersion, []);
  
    PrintLn(GetAppVersionInfo);
  
    Log.LeaveMethod(TFIToolkit, @TFIToolkit.PrintVersion);
  end;
  
  procedure TFIToolkit.ProcessOptions;
  var
    Opt : TCLIOption;
    Cmd : TApplicationCommand;
  begin
    Log.EnterMethod(TFIToolkit, @TFIToolkit.ProcessOptions, []);
  
    FOptions.Sort(TComparer<TCLIOption>.Construct(
      function (const Left, Right : TCLIOption) : Integer
      begin
  