code: private MatchingPart createEmoPermissionPart(String part, PartType partType) {
          part = unescapeSeparators(part);
  
          // Superclass guarantees part will be non-empty; no need to validate length prior to evaluating the first character
          switch (part.charAt(0)) {
              case 'c':
                  // "createTable" only applies to table resource parts
                  if (isTableResource(partType) && part.startsWith("createTable(") && part.endsWith(")")) {
                      String rison = part.substring(12, part.length() - 1);
                      return RisonHelper.fromORison(rison, CreateTablePart.class);
                  }
                  break;
  
              case 'i':
                  if (part.startsWith("if(") && part.endsWith(")")) {
                      String condition = part.substring(3, part.length() - 1);
                      switch (partType) {
                          case SOR_TABLE:
                              return new SorTableConditionPart(Conditions.fromString(condition), _dataStore);
                          case BLOB_TABLE:
                              return new BlobTableConditionPart(Conditions.fromString(condition), _blobStore);
                          default:
                              return new ConditionPart(Conditions.fromString(condition));
                      }
                  }
                  break;
  
              case '*':
                  if (part.length() == 1) {
                      // This is a pure wildcard
                      return getAnyPart();
                  }
                  break;
  
              case '?':
                  if (part.length() == 1) {
                      // This is an "implied part exists" check
                      return EmoImpliedPartExistsPart.instance();
                  }
                  break;
  
          }
  
          // All other strings shortcuts for either a resource name or a wildcard expression for matching the name.
          Condition condition = Conditions.like(part);
          if (condition instanceof EqualCondition) {
              return new EmoConstantPart(part);
          }
  
          return new ConditionPart(condition);
      }
docs: Creates a TableIdentificationPart for the third value in a data or blob store permission.
  @param part String representation of the part
  @param partType What type of part is being evaluated