code: private void cacheCodes() {
          Set<ProcCode> set = new HashSet<ProcCode>();
  
          if (parent != null) {
              set.addAll(Arrays.asList(parent.getCodes()));
          }
  
          if (scopeCodes != null) {
              set.addAll(scopeCodes);
          }
  
          cachedCodes = set.toArray(new ProcCode[set.size()]);
          Arrays.sort(
                  cachedCodes,
                  new Comparator<ProcCode>() {
                      public int compare(ProcCode code1, ProcCode code2) {
                          return code2.compareTo(code1);
                      }
                  }
          );
  
          for (ProcCode code : cachedCodes) {
              hasCrazyCode = hasCrazyCode || !code.startsWithConstant();
              hasCheck = hasCheck || code.containsCheck();
          }
      }
docs: Cache scope codes. Join scope codes with parent scope codes.