private ViewCycleTrigger createViewCycleTrigger(ViewExecutionOptions executionOptions) {
   CombinedViewCycleTrigger trigger = new CombinedViewCycleTrigger();
   trigger.addTrigger(_compilationExpiryCycleTrigger);
   if (executionOptions.getFlags().contains(ViewExecutionFlags.RUN_AS_FAST_AS_POSSIBLE)) {
     trigger.addTrigger(new RunAsFastAsPossibleTrigger());
   }
   if (executionOptions.getFlags().contains(ViewExecutionFlags.TRIGGER_CYCLE_ON_TIME_ELAPSED)) {
     trigger.addTrigger(new RecomputationPeriodTrigger(this));
   }
   if (executionOptions.getMaxSuccessiveDeltaCycles() != null) {
     trigger.addTrigger(
         new SuccessiveDeltaLimitTrigger(executionOptions.getMaxSuccessiveDeltaCycles()));
   }
   return trigger;
 }
 public ViewComputationJob(
     ViewProcessImpl viewProcess,
     ViewExecutionOptions executionOptions,
     ViewProcessContext processContext,
     EngineResourceManagerInternal<SingleComputationCycle> cycleManager) {
   ArgumentChecker.notNull(viewProcess, "viewProcess");
   ArgumentChecker.notNull(executionOptions, "executionOptions");
   ArgumentChecker.notNull(processContext, "processContext");
   ArgumentChecker.notNull(cycleManager, "cycleManager");
   _viewProcess = viewProcess;
   _executionOptions = executionOptions;
   _processContext = processContext;
   _cycleManager = cycleManager;
   _marketDataChanged =
       !executionOptions.getFlags().contains(ViewExecutionFlags.WAIT_FOR_INITIAL_TRIGGER);
   _compilationExpiryCycleTrigger = new FixedTimeTrigger();
   _masterCycleTrigger = createViewCycleTrigger(executionOptions);
   _executeCycles = !getExecutionOptions().getFlags().contains(ViewExecutionFlags.COMPILE_ONLY);
   updateViewDefinitionIfRequired();
   subscribeToViewDefinition();
 }