func: function processPreSale(address _caller) private {
          var (allowedContribution, refundAmount) = processContribution();
          require(msg.value == allowedContribution.add(refundAmount));
          if (allowedContribution > 0) {
              doBuy(_caller, allowedContribution);
              if (refundAmount > 0) {
                  msg.sender.transfer(refundAmount);
              }
          } else {
              revert();
          }
      }