docs: def to_jabsorb(value):
      """
      Adds information for Jabsorb, if needed.
  
      Converts maps and lists to a jabsorb form.
      Keeps tuples as is, to let them be considered as arrays.
  
      :param value: A Python result to send to Jabsorb
      :return: The result in a Jabsorb map format (not a JSON object)
      """
      # None ?
      if value is None:
          return None
  
      # Map ?
      elif isinstance(value, dict):
          if JAVA_CLASS in value or JSON_CLASS in value:
              if not _is_converted_class(value.get(JAVA_CLASS)):
                  # Bean representation
                  converted_result = {}
  
                  for key, content in value.items():
                      converted_result[key] = to_jabsorb(content)
  
                  try:
                      # Keep the raw jsonrpclib information
                      converted_result[JSON_CLASS] = value[JSON_CLASS]
                  except KeyError:
                      pass
  
              else:
                  # We already worked on this value
                  converted_result = value
  
          else:
              # Needs the whole transformation
              converted_result = {JAVA_CLASS: "java.util.HashMap"}
              converted_result["map"] = map_pairs = {}
              for key, content in value.items():
                  map_pairs[key] = to_jabsorb(content)
  
              try:
                  # Keep the raw jsonrpclib information
                  map_pairs[JSON_CLASS] = value[JSON_CLASS]
              except KeyError:
                  pass
  
      # List ? (consider tuples as an array)
      elif isinstance(value, list):
          converted_result = {
              JAVA_CLASS: "java.util.ArrayList",
              "list": [to_jabsorb(entry) for entry in value],
          }
  
      # Set ?
      elif isinstance(value, (set, frozenset)):
          converted_result = {
              JAVA_CLASS: "java.util.HashSet",
              "set": [to_jabsorb(entry) for entry in value],
          }
  
      # Tuple ? (used as array, except if it is empty)
      elif isinstance(value, tuple):
          converted_result = [to_jabsorb(entry) for entry in value]
  
      elif hasattr(value, JAVA_CLASS):
          # Class with a Java class hint: convert into a dictionary
          class_members = {
              name: getattr(value, name)
              for name in dir(value)
              if not name.startswith("_")
          }
  
          converted_result = HashableDict(
              (name, to_jabsorb(content))
              for name, content in class_members.items()
              if not inspect.ismethod(content)
          )
  
          # Do not forget the Java class
          converted_result[JAVA_CLASS] = getattr(value, JAVA_CLASS)
  
          # Also add a __jsonclass__ entry
          converted_result[JSON_CLASS] = _compute_jsonclass(value)
  
      # Other ?
      else:
          converted_result = value
  
      return converted_result