public CombinedLibraryModels()

in nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java [971:1079]


    public CombinedLibraryModels(Iterable<LibraryModels> models, Config config) {
      this.config = config;
      ImmutableSetMultimap.Builder<MethodRef, Integer> failIfNullParametersBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSetMultimap.Builder<MethodRef, Integer> explicitlyNullableParametersBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSetMultimap.Builder<MethodRef, Integer> nonNullParametersBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSetMultimap.Builder<String, Integer> nullableVariableTypeUpperBoundsBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSet.Builder<String> nullMarkedClassesBuilder = new ImmutableSet.Builder<>();
      ImmutableSetMultimap.Builder<MethodRef, Integer> nullImpliesTrueParametersBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSetMultimap.Builder<MethodRef, Integer> nullImpliesFalseParametersBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSetMultimap.Builder<MethodRef, Integer> nullImpliesNullParametersBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableSet.Builder<MethodRef> nullableReturnsBuilder = new ImmutableSet.Builder<>();
      ImmutableSet.Builder<MethodRef> nonNullReturnsBuilder = new ImmutableSet.Builder<>();
      ImmutableSetMultimap.Builder<MethodRef, Integer> castToNonNullMethodsBuilder =
          new ImmutableSetMultimap.Builder<>();
      ImmutableList.Builder<StreamTypeRecord> customStreamNullabilitySpecsBuilder =
          new ImmutableList.Builder<>();
      ImmutableSet.Builder<FieldRef> nullableFieldsBuilder = new ImmutableSet.Builder<>();
      for (LibraryModels libraryModels : models) {
        for (Map.Entry<MethodRef, Integer> entry : libraryModels.failIfNullParameters().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          failIfNullParametersBuilder.put(entry);
        }
        for (Map.Entry<MethodRef, Integer> entry :
            libraryModels.explicitlyNullableParameters().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          explicitlyNullableParametersBuilder.put(entry);
        }
        for (Map.Entry<MethodRef, Integer> entry : libraryModels.nonNullParameters().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          nonNullParametersBuilder.put(entry);
        }
        for (Map.Entry<MethodRef, Integer> entry :
            libraryModels.nullImpliesTrueParameters().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          nullImpliesTrueParametersBuilder.put(entry);
        }
        for (Map.Entry<MethodRef, Integer> entry :
            libraryModels.nullImpliesFalseParameters().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          nullImpliesFalseParametersBuilder.put(entry);
        }
        for (Map.Entry<MethodRef, Integer> entry :
            libraryModels.nullImpliesNullParameters().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          nullImpliesNullParametersBuilder.put(entry);
        }
        for (MethodRef name : libraryModels.nullableReturns()) {
          if (shouldSkipModel(name)) {
            continue;
          }
          nullableReturnsBuilder.add(name);
        }
        for (MethodRef name : libraryModels.nonNullReturns()) {
          if (shouldSkipModel(name)) {
            continue;
          }
          nonNullReturnsBuilder.add(name);
        }
        for (Map.Entry<MethodRef, Integer> entry : libraryModels.castToNonNullMethods().entries()) {
          if (shouldSkipModel(entry.getKey())) {
            continue;
          }
          castToNonNullMethodsBuilder.put(entry);
        }
        nullableVariableTypeUpperBoundsBuilder.putAll(
            libraryModels.typeVariablesWithNullableUpperBounds());
        for (String name : libraryModels.nullMarkedClasses()) {
          nullMarkedClassesBuilder.add(name);
        }
        for (StreamTypeRecord streamTypeRecord : libraryModels.customStreamNullabilitySpecs()) {
          customStreamNullabilitySpecsBuilder.add(streamTypeRecord);
        }
        for (FieldRef fieldRef : libraryModels.nullableFields()) {
          nullableFieldsBuilder.add(fieldRef);
        }
      }
      failIfNullParameters = failIfNullParametersBuilder.build();
      explicitlyNullableParameters = explicitlyNullableParametersBuilder.build();
      nonNullParameters = nonNullParametersBuilder.build();
      nullImpliesTrueParameters = nullImpliesTrueParametersBuilder.build();
      nullImpliesFalseParameters = nullImpliesFalseParametersBuilder.build();
      nullImpliesNullParameters = nullImpliesNullParametersBuilder.build();
      nullableReturns = nullableReturnsBuilder.build();
      nonNullReturns = nonNullReturnsBuilder.build();
      castToNonNullMethods = castToNonNullMethodsBuilder.build();
      customStreamNullabilitySpecs = customStreamNullabilitySpecsBuilder.build();
      nullableFields = nullableFieldsBuilder.build();
      nullableVariableTypeUpperBounds = nullableVariableTypeUpperBoundsBuilder.build();
      nullMarkedClasses = nullMarkedClassesBuilder.build();
    }