code: @Override
      public VariableNullability appendNewVariables(ImmutableMap<Variable, Variable> nullabilityBindings) {
          ImmutableList<ImmutableSet<Variable>> groupList = ImmutableList.copyOf(nullableGroups);
          ImmutableMap<Variable, Integer> originalVariableMap = extractVariableMap(groupList);
  
          AtomicInteger groupCount = new AtomicInteger(groupList.size());
  
          ImmutableMultimap<Integer, Variable> newVariableMultimap = nullabilityBindings.entrySet().stream()
                  .collect(ImmutableCollectors.toMultimap(
                          e -> e.getKey().equals(e.getValue())
                                  ? groupCount.getAndIncrement()
                                  : originalVariableMap.get(e.getValue()),
                          Map.Entry::getKey));
  
          ImmutableSet<ImmutableSet<Variable>> newNullableGroups = IntStream.range(0, groupCount.get())
                  .boxed()
                  .map(i -> i < groupList.size()
                          ? Sets.union(groupList.get(i), ImmutableSet.copyOf(newVariableMultimap.get(i)))
                              .immutableCopy()
                          : ImmutableSet.copyOf(newVariableMultimap.get(i)))
                  .collect(ImmutableCollectors.toSet());
  
          return new VariableNullabilityImpl(newNullableGroups);
      }
docs: TODO: check the input in TEST MODE