code: @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
      public static Branch getAutoInstance(@NonNull Context context, @NonNull String branchKey) {
          isAutoSessionMode_ = true;
          customReferrableSettings_ = CUSTOM_REFERRABLE_SETTINGS.USE_DEFAULT;
          boolean isTest = BranchUtil.checkTestMode(context);
          getBranchInstance(context, !isTest, branchKey);
          
          if (branchKey.startsWith("key_")) {
              boolean isNewBranchKeySet = branchReferral_.prefHelper_.setBranchKey(branchKey);
              //on setting a new key clear link cache and pending requests
              if (isNewBranchKeySet) {
                  branchReferral_.linkCache_.clear();
                  branchReferral_.requestQueue_.clear();
              }
          } else {
              PrefHelper.Debug("Branch Key is invalid. Please check your BranchKey");
          }
          return branchReferral_;
      }
docs: <p>Singleton method to return the pre-initialised, or newly initialise and return, a singleton
  object of the type {@link Branch}.</p>
  <p>Use this whenever you need to call a method directly on the {@link Branch} object.</p>
  
  @param context   A {@link Context} from which this call was made.
  @param branchKey A {@link String} value used to initialize Branch.
  @return An initialised {@link Branch} object, either fetched from a pre-initialised
  instance within the singleton class, or a newly instantiated object where
  one was not already requested during the current app lifecycle.