/// <summary>
 /// Clones this ProjectInvocationRule.
 /// </summary>
 /// <returns>A new ProjectInvocationRule instance representing a clone of this ProjectInvocationRule.</returns>
 public ProjectInvocationRule Clone()
 {
     var rule = new ProjectInvocationRule() {
         m_wsProvider = this.m_wsProvider,
         m_nrProvider = this.m_nrProvider,
         m_id = this.m_id,
         m_usesInput = this.m_usesInput,
         m_inputSheetKey = this.m_inputSheetKey,
         m_inputCellRange = this.m_inputCellRange,
         m_inputRangeOrder = this.m_inputRangeOrder,
         m_timeLimit = this.m_timeLimit,
         m_timeUnit = this.m_timeUnit,
         m_usesOutput = this.m_usesOutput,
         m_outputSheetKey = this.m_outputSheetKey,
         m_outputCellRange = this.m_outputCellRange,
         m_outputRangeOrder = this.m_outputRangeOrder,
         m_projectPath = this.m_projectPath,
         m_reloadProjectBeforeExecuting = this.m_reloadProjectBeforeExecuting,
         m_enabled = this.m_enabled,
         m_lastExecutionResult = this.m_lastExecutionResult
     };
     rule.UpdateInputSheetRangeNames();
     rule.UpdateOutputSheetRangeNames();
     rule.UpdateValidity(true);
     return rule;
 }