private static void testEncodable(Encodable encodable) throws Exception {
    ByteQueue queue = new ByteQueue();
    encodable.write(queue);

    ServicesSupported servicesSupported = new ServicesSupported();
    servicesSupported.setAll(true);

    Encodable deserialized;
    if (BaseError.class.isAssignableFrom(encodable.getClass()))
      deserialized = BaseError.createBaseError(queue);
    else if (NotificationParameters.class.isAssignableFrom(encodable.getClass()))
      deserialized = NotificationParameters.createNotificationParameters(queue);
    else if (EventParameter.class.isAssignableFrom(encodable.getClass()))
      deserialized = EventParameter.createEventParameter(queue);
    else if (AcknowledgementService.class.isAssignableFrom(encodable.getClass()))
      deserialized =
          AcknowledgementService.createAcknowledgementService(
              ((Service) encodable).getChoiceId(), queue);
    else if (UnconfirmedRequestService.class.isAssignableFrom(encodable.getClass()))
      deserialized =
          UnconfirmedRequestService.createUnconfirmedRequestService(
              ((Service) encodable).getChoiceId(), queue);
    else {
      Constructor<? extends Encodable> c = encodable.getClass().getConstructor(ByteQueue.class);
      deserialized = c.newInstance(queue);
    }

    if (!deserialized.equals(encodable))
      throw new Exception("Unequal deserialization in class " + encodable.getClass());
  }
 public void handleUnconfirmedRequest(
     Address from, Network network, UnconfirmedRequestService serviceRequest) {
   System.out.println("Received unconfirmed service request " + serviceRequest.getClass());
 }