/**
  * This method can be invoked from {@link #doInBackground} to publish updates on the UI thread
  * while the background computation is still running. Each call to this method will trigger the
  * execution of {@link #onProgressUpdate} on the UI thread.
  *
  * <p>{@link #onProgressUpdate} will note be called if the task has been canceled.
  *
  * @param values The progress values to update the UI with.
  * @see #onProgressUpdate
  * @see #doInBackground
  */
 @DSGenerator(
     tool_name = "Doppelganger",
     tool_version = "2.0",
     generated_on = "2013-12-30 12:30:27.871 -0500",
     hash_original_method = "0B5FDDD22527F2F69D5D9DE9D9A2B1C6",
     hash_generated_method = "D6162B4EF4179E6560EB9178786EC120")
 protected final void publishProgress(Progress... values) {
   if (!isCancelled()) {
     sHandler
         .obtainMessage(MESSAGE_POST_PROGRESS, new AsyncTaskResult<Progress>(this, values))
         .sendToTarget();
   }
 }
 @DSGenerator(
     tool_name = "Doppelganger",
     tool_version = "2.0",
     generated_on = "2013-12-30 12:30:27.834 -0500",
     hash_original_method = "1FE912CF37AD5F28EFBFA6E2EE976D7C",
     hash_generated_method = "602FBAA8201076CF27A77C6A020DD7E3")
 @DSBan(DSCat.PRIVATE_METHOD)
 private Result postResult(Result result) {
   Message message =
       sHandler.obtainMessage(MESSAGE_POST_RESULT, new AsyncTaskResult<Result>(this, result));
   message.sendToTarget();
   return result;
 }