/**
  * 第1引数に第2引数を連結します.第1引数は破壊的に更新されます(インスタンスの参照を変えません).
  *
  * @param targetArray
  * @param initialArray
  * @return 第1引数と同じインスタンス
  */
 public static <T> List<T> concatList(List<T> targetArray, List<T> initialArray) {
   if (targetArray == null) {
     LogUtils.v("  targetArray is Null. create new one( and return it).");
     targetArray = new ArrayList<T>();
   }
   if (initialArray != null) Iterables.addAll(targetArray, initialArray);
   return targetArray;
 }
  /**
   * ArrayListインスタンスそのものは変更せず,中身だけをinitialArrayで完全に上書きします.
   *
   * @param targetArray
   * @param initialArray
   * @return targetArray
   */
  public static <T> ArrayList<T> initArrayListWith(
      ArrayList<T> targetArray, ArrayList<T> initialArray) {
    if (targetArray == null) {
      LogUtils.v("  targetArray is Null. create new one( and return it).");
      targetArray = new ArrayList<T>();
    }
    // 同じインスタンスだった場合,前者をclearしてから後者を入れると,けっきょくぜんぶclearされてしまうので.
    if (targetArray == initialArray) return targetArray;

    targetArray.clear();
    if (initialArray != null) Iterables.addAll(targetArray, initialArray);
    return targetArray;
  }
  public static void checkDailyAward() {
    if (UserState.getInstance().isGuest()) {
      return;
    }

    boolean hasAward;
    try {
      hasAward = RequestHelper.hasDailyAward();
    } catch (ConnectionException | RemoteException | RequestException e) {
      LogUtils.v(TAG, "check daily award failed", e);
      return;
    }

    if (hasAward) {
      AppCtx.getEventBus().post(new BusEvent.DailyAwardEvent(true));
    }
  }