contract ConditionalEscrow is Escrow {
  /**
  * @dev Returns whether an address is allowed to withdraw their funds. To be
  * implemented by derived contracts.
  * @param _payee The destination address of the funds.
  */
  function withdrawalAllowed(address _payee) public view returns (bool);

  function withdraw(address _payee) public {
    require(withdrawalAllowed(_payee));
    super.withdraw(_payee);
  }
}
/**
 * @title ConditionalEscrow
 * @dev Base abstract escrow to only allow withdrawal if a condition is met.
 */
function withdrawalAllowed(address _payee) public view returns (bool);
/**
 * @dev Returns whether an address is allowed to withdraw their funds. To be
 * implemented by derived contracts.
 * @param _payee The destination address of the funds.
 */