code: private void handleSingle(@NonNull String permissionName) {
          if (permissionExists(permissionName)) {// android M throws exception when requesting
              // run time permission that does not exists in AndroidManifest.
              if (!permissionName.equalsIgnoreCase(Manifest.permission.SYSTEM_ALERT_WINDOW)) {
                  if (isPermissionDeclined(permissionName)) {
                      if (isExplanationNeeded(permissionName) && !skipExplanation) {
                          permissionCallback.onPermissionNeedExplanation(permissionName);
                      } else {
                          ActivityCompat.requestPermissions(context, new String[]{permissionName}, REQUEST_PERMISSIONS);
                      }
                  } else {
                      permissionCallback.onPermissionPreGranted(permissionName);
                  }
              } else {
                  requestSystemAlertPermission();
              }
          } else {
              permissionCallback.onPermissionDeclined(new String[]{permissionName});
          }
      }
docs: internal usage.