code: void doIncorporation(InferenceContext inferenceContext, Warner warn) throws InferenceException {
          try {
              boolean progress = true;
              int round = 0;
              while (progress && round < MAX_INCORPORATION_STEPS) {
                  progress = false;
                  for (Type t : inferenceContext.undetvars) {
                      UndetVar uv = (UndetVar)t;
                      if (!uv.incorporationActions.isEmpty()) {
                          progress = true;
                          uv.incorporationActions.removeFirst().apply(inferenceContext, warn);
                      }
                  }
                  round++;
              }
          } finally {
              incorporationCache.clear();
          }
      }
docs: Check bounds and perform incorporation.