code: @Override
    public byte[] recvFromChildren() {
      LOG.entering("OperatorTopologyStructImpl", "recvFromChildren", getQualifiedName());
      for (final NodeStruct child : children) {
        childrenToRcvFrom.add(child.getId());
      }
  
      byte[] retVal = new byte[0];
      while (!childrenToRcvFrom.isEmpty()) {
        LOG.finest(getQualifiedName() + "Waiting for some child to send data");
        final NodeStruct child = nodesWithDataTakeUnsafe();
        final byte[] receivedVal = recvFromNodeCheckBigMsg(child,
            ReefNetworkGroupCommProtos.GroupCommMessage.Type.Gather);
  
        if (receivedVal != null) {
          retVal = ArrayUtils.addAll(retVal, receivedVal);
        }
        childrenToRcvFrom.remove(child.getId());
      }
  
      LOG.exiting("OperatorTopologyStructImpl", "recvFromChildren", getQualifiedName());
      return retVal;
    }
docs: Receive data from all children as a single byte array.
  Messages from children are simply byte-concatenated.
  This method is currently used only by the Gather operator.
  
  @return gathered data as a byte array