Program: 22572
Project: 22572
Buggy source:
public GroupsActor(){
  receive(ReceiveBuilder.match(Messages.GroupJoin.class,groupJoin -> {
    groups.computeIfAbsent(groupJoin.hubname,k -> new HashMap<>()).computeIfAbsent(groupJoin.groupname,k -> new HashSet<>());
    groups.get(groupJoin.hubname).get(groupJoin.groupname).add(groupJoin.uuid);
    usersInGroup.computeIfAbsent(groupJoin.hubname,k -> new HashMap<>()).computeIfAbsent(groupJoin.uuid,k -> new HashSet<>());
    usersInGroup.get(groupJoin.hubname).get(groupJoin.uuid).add(groupJoin.groupname);
    Logger.debug(groupJoin.uuid + "String_Node_Str" + groupJoin.groupname);
  }
).match(Messages.GroupLeave.class,groupLeave -> {
    leaveGroup(groupLeave.hubname,groupLeave.uuid,groupLeave.groupname);
    Logger.debug(groupLeave.uuid + "String_Node_Str" + groupLeave.groupname);
  }
).match(Messages.Quit.class,quit -> {
    groups.keySet().stream().forEach(hubname -> groups.get(hubname).keySet().forEach(group -> leaveGroup(hubname,quit.uuid,group)));
  }
).match(Messages.ClientFunctionCall.class,clientFunctionCall -> {
switch (clientFunctionCall.sendType) {
case All:
case Others:
case Caller:
case Clients:
case AllExcept:
      throw new IllegalStateException("String_Node_Str" + clientFunctionCall.sendType);
case Group:
    if (groups.containsKey(clientFunctionCall.hubName) && groups.get(clientFunctionCall.hubName).containsKey(clientFunctionCall.groupName)) {
      signalJActor.forward(new Messages.ClientFunctionCall(clientFunctionCall.method,clientFunctionCall.hubName,null,Messages.SendType.Clients,clientFunctionCall.name,clientFunctionCall.args,groups.get(clientFunctionCall.hubName).get(clientFunctionCall.groupName).toArray(new UUID[0]),clientFunctionCall.allExcept,clientFunctionCall.groupName),getContext());
    }
  break;
case InGroupExcept:
final List<UUID> inGroupExcept=Arrays.asList(clientFunctionCall.allExcept);
if (groups.containsKey(clientFunctionCall.hubName) && groups.get(clientFunctionCall.hubName).containsKey(clientFunctionCall.groupName)) {
final List<UUID> sendTo=(groups.get(clientFunctionCall.hubName).get(clientFunctionCall.groupName).stream().filter(uuid -> !inGroupExcept.contains(uuid)).collect(Collectors.toList()));
signalJActor.forward(new Messages.ClientFunctionCall(clientFunctionCall.method,clientFunctionCall.hubName,null,Messages.SendType.Clients,clientFunctionCall.name,clientFunctionCall.args,sendTo.toArray(new UUID[0]),clientFunctionCall.allExcept,clientFunctionCall.groupName),getContext());
}
break;
}
}
).build());
}

Fixed version (ground truth):
public GroupsActor(){
  receive(ReceiveBuilder.match(Messages.GroupJoin.class,groupJoin -> {
    groups.computeIfAbsent(groupJoin.hubname,k -> new HashMap<>()).computeIfAbsent(groupJoin.groupname,k -> new HashSet<>());
    groups.get(groupJoin.hubname).get(groupJoin.groupname).add(groupJoin.uuid);
    usersInGroup.computeIfAbsent(groupJoin.hubname,k -> new HashMap<>()).computeIfAbsent(groupJoin.uuid,k -> new HashSet<>());
    usersInGroup.get(groupJoin.hubname).get(groupJoin.uuid).add(groupJoin.groupname);
    Logger.debug(groupJoin.uuid + "String_Node_Str" + groupJoin.groupname);
  }
).match(Messages.GroupLeave.class,groupLeave -> {
    leaveGroup(groupLeave.hubname,groupLeave.uuid,groupLeave.groupname);
    Logger.debug(groupLeave.uuid + "String_Node_Str" + groupLeave.groupname);
  }
).match(Messages.Quit.class,quit -> {
    final Set<String> hubs=getKeys(groups.keySet());
    hubs.stream().forEach(hubname -> {
      final Set<String> groupnames=getKeys(groups.get(hubname).keySet());
      groupnames.forEach(group -> leaveGroup(hubname,quit.uuid,group));
    }
);
  }
).match(Messages.ClientFunctionCall.class,clientFunctionCall -> {
switch (clientFunctionCall.sendType) {
case All:
case Others:
case Caller:
case Clients:
case AllExcept:
      throw new IllegalStateException("String_Node_Str" + clientFunctionCall.sendType);
case Group:
    if (groups.containsKey(clientFunctionCall.hubName) && groups.get(clientFunctionCall.hubName).containsKey(clientFunctionCall.groupName)) {
      signalJActor.forward(new Messages.ClientFunctionCall(clientFunctionCall.method,clientFunctionCall.hubName,null,Messages.SendType.Clients,clientFunctionCall.name,clientFunctionCall.args,groups.get(clientFunctionCall.hubName).get(clientFunctionCall.groupName).toArray(new UUID[0]),clientFunctionCall.allExcept,clientFunctionCall.groupName),getContext());
    }
  break;
case InGroupExcept:
final List<UUID> inGroupExcept=Arrays.asList(clientFunctionCall.allExcept);
if (groups.containsKey(clientFunctionCall.hubName) && groups.get(clientFunctionCall.hubName).containsKey(clientFunctionCall.groupName)) {
final List<UUID> sendTo=(groups.get(clientFunctionCall.hubName).get(clientFunctionCall.groupName).stream().filter(uuid -> !inGroupExcept.contains(uuid)).collect(Collectors.toList()));
signalJActor.forward(new Messages.ClientFunctionCall(clientFunctionCall.method,clientFunctionCall.hubName,null,Messages.SendType.Clients,clientFunctionCall.name,clientFunctionCall.args,sendTo.toArray(new UUID[0]),clientFunctionCall.allExcept,clientFunctionCall.groupName),getContext());
}
break;
}
}
).build());
}