private void runRequest(BillingRequest request) {
   try {
     final long requestId = request.run(mService);
     BillingController.onRequestSent(requestId, request);
   } catch (RemoteException e) {
     Log.w(this.getClass().getSimpleName(), "Remote billing service crashed");
     // TODO: Retry?
   }
 }
 private void runPendingRequests() {
   BillingRequest request;
   int maxStartId = -1;
   while ((request = mPendingRequests.peek()) != null) {
     if (mService != null) {
       runRequest(request);
       mPendingRequests.remove();
       if (maxStartId < request.getStartId()) {
         maxStartId = request.getStartId();
       }
     } else {
       bindMarketBillingService();
       return;
     }
   }
   if (maxStartId >= 0) {
     stopSelf(maxStartId);
   }
 }