### Question:
ImmutableGroup implements CommandGroup { @Nonnull @Override public Set<? extends CommandCallable> getCommands() { return commands; } private  ImmutableGroup(
      ImmutableGroup parent, Set<String> names, Set<? extends CommandCallable> commands); @Nonnull static CommandGroup merge(@Nonnull CommandGroup... rootGroups); @Nonnull static CommandGroup merge(@Nonnull Collection<? extends CommandGroup> rootGroups); @CheckReturnValue @Nonnull static ImmutableGroupBuilder builder(); @Nonnull static ImmutableGroup childlessRoot(@Nonnull Set<CommandCallable> commands); @Nonnull static ImmutableGroup copyOf(@Nonnull CommandGroup group); @Nonnull static ImmutableGroup of(@Nonnull T root, @Nonnull GroupAssembler<T> assembler); @Nonnull @Override Optional<ImmutableGroup> getParent(); @Nonnull @Override Set<ImmutableGroup> getChildren(); @Nonnull @Override Set<String> getNames(); @Nonnull @Override Set<? extends CommandCallable> getCommands(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); static final ImmutableGroup EMPTY; }### Answer:
@Test void testCommandImmutability() { assertThrows(UnsupportedOperationException.class, () -> group.getCommands().clear(), "commands set is not immutable"); }