public SendRequestReceiveResponseScope()
 {
     tryCatch = new TryCatch
     {
         //Try = Body, // it is already set above
         Catches =
         {
             new Catch<Exception>
             {
                 Action = new ActivityAction<Exception>
                 {
                     Handler = new Sequence
                     {
                         Activities =
                         {
                             new ConditionalOperationTaskWaiter(),
                             new Rethrow(),
                         },
                     },
                 },
             },
         },
         // The Finally works differently here than in C#, it is called only when the Try/Catch blocks complete.
         // In case of exception, those activities above will always Fault (the Body or additionally the operation task will throw).
         // This Finally is called only in case of Close or Cancel, in case of Cancel, we should also check the operation task's observed state.
         // A special case, when this scope is in an external TryCatch and that Catch handles the propagated exception,
         // in this case both Fault and Cancel happens, and we double-check the the operation task's observed state.
         Finally = new ConditionalOperationTaskWaiter(),
     };
     noPersistHandle = new Variable<NoPersistHandle>();
     Constraints.Add(OperationActivityHelper.VerifyParentIsWorkflowActivity());
     Constraints.Add(SendRequestReceiveResponseScopeHelper.VerifySendRequestReceiveResponseScopeChildren());
     Constraints.Add(SendRequestReceiveResponseScopeHelper.SetSendRequestReceiveResponseScopeExecutionPropertyFactory());
 }