func: function beforeExecuteForFutureBlockCall(Call storage self, address executor, uint startGas) returns (bool) {
          bytes32 reason;
  
          var call = FutureBlockCall(this);
  
          if (startGas < self.requiredGas) {
              
              reason = "NOT_ENOUGH_GAS";
          }
          else if (self.wasCalled) {
              
              reason = "ALREADY_CALLED";
          }
          else if (block.number < call.targetBlock() || block.number > call.targetBlock() + call.gracePeriod()) {
              
              reason = "NOT_IN_CALL_WINDOW";
          }
          else if (!checkExecutionAuthorization(self, executor, block.number)) {
              
              
              reason = "NOT_AUTHORIZED";
          }
          else if (self.requiredStackDepth > 0 && executor != tx.origin && !checkDepth(self.requiredStackDepth)) {
              reason = "STACK_TOO_DEEP";
          }
  
          if (reason != 0x0) {
              CallAborted(executor, reason);
              return false;
          }
  
          return true;
      }