code: private List<StorableProperty<?>>[] caseMatches(int caseCount) {
          List<StorableProperty<?>>[] cases = new List[caseCount];
  
          for (StorableProperty<?> prop : mAllProperties.values()) {
              int hashCode = prop.getName().hashCode();
              int caseValue = (hashCode & 0x7fffffff) % caseCount;
              List matches = cases[caseValue];
              if (matches == null) {
                  matches = cases[caseValue] = new ArrayList<StorableProperty<?>>();
              }
              matches.add(prop);
          }
  
          return cases;
      }
docs: Returns the properties that match on a given case. The array length is
  the same as the case count. Each list represents the matches. The lists
  themselves may be null if no matches for that case.