code: @PATCH
      public void patchObjects(List<APIPatch<String>> patches)
              throws GuacamoleException {
  
          // Apply all patch operations individually
          RelatedObjectSetPatch objectPatch = new RelatedObjectSetPatch();
          for (APIPatch<String> patch : patches) {
  
              String path = patch.getPath();
  
              // Add/remove objects from set
              if (path.equals(OBJECT_PATH)) {
                  String identifier = patch.getValue();
                  updateRelatedObjectSet(patch.getOp(), objectPatch, identifier);
              }
  
              // Otherwise, the path is not supported
              else
                  throw new GuacamoleClientException("Unsupported patch path: \"" + path + "\"");
  
          } // end for each patch operation
  
          // Save changes
          objectPatch.apply(objects);
  
      }
docs: Applies a given list of patches to the RelatedObjectSet exposed by this
  RelatedObjectSetResource. Each patch specifies either
  an "add" or a "remove" operation for a particular object represented
  by its identifier. The path of each operation MUST be "/", with the
  identifier of the object being provided within the value of the patch.
  
  @param patches
  The patches to apply for this request.
  
  @throws GuacamoleException
  If an error is encountered while modifying the contents of the
  RelatedObjectSet.