code: public List<String> parseRequestResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
          if (requestCode != this.lastRequestCode) {
              Log.d(TAG, String.format("The received Request Code doesn't match the expected one. Was %d but expected %d", requestCode, this.lastRequestCode));
              return Arrays.asList(permissions);
          } else if (permissions.length == 0 && grantResults.length == 0) {
              Log.w(TAG, "All the required permissions were declined by the user.");
              return Arrays.asList(permissions);
          }
  
          List<String> declinedPermissions = new ArrayList<>();
          for (int i = 0; i < permissions.length; i++) {
              if (grantResults[i] != PermissionChecker.PERMISSION_GRANTED) {
                  declinedPermissions.add(permissions[i]);
              }
          }
          if (!declinedPermissions.isEmpty()) {
              Log.w(TAG, String.format("%d permissions were explicitly declined by the user.", declinedPermissions.size()));
          }
          return declinedPermissions;
      }
docs: Called when there is a new response for a Android Manifest Permission request
  
  @param requestCode  received.
  @param permissions  the Android Manifest Permissions that were requested
  @param grantResults the grant result for each permission
  @return the list of Android Manifest Permissions that were declined by the user.