docs: public static int lastIndexOfIgnoreCase(String pString, String pLookFor, int pPos) {
          if ((pString == null) || (pLookFor == null)) {
              return -1;
          }
          if (pLookFor.length() == 0) {
              return pPos;// All strings "contains" the empty string
          }
          if (pLookFor.length() > pString.length()) {
              return -1;// Cannot contain string longer than itself
          }
  
          // Get first char
          char firstL = Character.toLowerCase(pLookFor.charAt(0));
          char firstU = Character.toUpperCase(pLookFor.charAt(0));
          int indexLower = pPos;
          int indexUpper = pPos;
  
          for (int i = pPos; i >= 0; i--) {
  
              // Peek for first char
              indexLower = ((indexLower >= 0) && (indexLower >= i))
                      ? pString.lastIndexOf(firstL, i)
                      : indexLower;
              indexUpper = ((indexUpper >= 0) && (indexUpper >= i))
                      ? pString.lastIndexOf(firstU, i)
                      : indexUpper;
              if (indexLower < 0) {
                  if (indexUpper < 0) {
                      return -1;// First char not found
                  }
                  else {
                      i = indexUpper;// Only upper
                  }
              }
              else if (indexUpper < 0) {
                  i = indexLower;// Only lower
              }
              else {
  
                  // Both found, select last occurence
                  i = (indexLower > indexUpper)
                          ? indexLower
                          : indexUpper;
              }
  
              // Only one?
              if (pLookFor.length() == 1) {
                  return i;// The only char found!
              }
  
              // Test if we still have enough chars
              else if (i > (pString.length() - pLookFor.length())) {
                  //return -1;
                  continue;
              }
  
              // Test if last char equals! (regionMatches is expensive)
              else
              if ((pString.charAt(i + pLookFor.length() - 1) != Character.toLowerCase(pLookFor.charAt(pLookFor.length() - 1)))
                      && (pString.charAt(i + pLookFor.length() - 1) != Character.toUpperCase(pLookFor.charAt(pLookFor.length() - 1)))) {
                  continue;// Nope, try next
              }
  
              // Test from second char, until second-last char
              else
              if ((pLookFor.length() <= 2) || pString.regionMatches(true, i + 1, pLookFor, 1, pLookFor.length() - 2)) {
                  return i;
              }
          }
          return -1;
      }