private void generateParentAddressLabel(@Nullable final UUID parentAddressLabel, final int parentAddress) throws IllegalArgumentException {
        this.parentAddressLabel = parentAddressLabel;
        if (parentAddressLabel == null) {
            if (MeshAddress.isValidVirtualAddress(parentAddress)) {
                throw new IllegalArgumentException("Please provide a Label UUID for the parent address of this group");
            } else if (!MeshAddress.isValidGroupAddress(parentAddress) && !MeshAddress.isValidUnassignedAddress(parentAddress)) {
                throw new IllegalArgumentException("parentAddress value must be a group address, " +
                        "virtual address or an unassigned address");
            }
            this.parentAddress = parentAddress;
        } else {
            this.parentAddress = MeshAddress.generateVirtualAddress(parentAddressLabel);
        }
    }
Constructs a mesh group

@param address            Address of the group
@param addressLabel       Label UUID of the group address in the case of a virtual address
@param parentAddress      Parent address of the group. If there is no parent group use {@link MeshAddress#UNASSIGNED_ADDRESS}
@param parentAddressLabel Label UUID of the parent address in the case of a virtual address
@param meshUuid           UUID of the mesh network
@throws IllegalArgumentException for invalid arguments
mesh/src/main/java/no/nordicsemi/android/mesh/Group.java