code: @Override
      public Entry<String, NotificationConfiguration> unmarshall(StaxUnmarshallerContext context) throws Exception {
          int originalDepth = context.getCurrentDepth();
          int targetDepth = originalDepth + 1;
  
          if (context.isStartOfDocument()) {
              targetDepth += 1;
          }
  
          T topicConfig = createConfiguration();
          String id = null;
  
          while (true) {
              XMLEvent xmlEvent = context.nextEvent();
              if (xmlEvent.isEndDocument()) {
                  return new SimpleEntry<String, NotificationConfiguration>(id, topicConfig);
              }
  
              if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
                  if (handleXmlEvent(topicConfig, context, targetDepth)) {
                      // Do nothing, subclass has handled it
                  } else if (context.testExpression("Id", targetDepth)) {
                      id = StringStaxUnmarshaller.getInstance().unmarshall(context);
                  } else if (context.testExpression("Event", targetDepth)) {
                      topicConfig.addEvent(StringStaxUnmarshaller.getInstance().unmarshall(context));
                  } else if (context.testExpression("Filter", targetDepth)) {
                      topicConfig.setFilter(FilterStaxUnmarshaller.getInstance().unmarshall(context));
                  }
              } else if (xmlEvent.isEndElement()) {
                  if (context.getCurrentDepth() < originalDepth) {
                      return new SimpleEntry<String, NotificationConfiguration>(id, topicConfig);
                  }
              }
          }
      }
docs: Id (aka configuration name) isn't modeled on the actual {@link NotificationConfiguration}
  class but as the key name in the map of configurations in
  {@link BucketNotificationConfiguration}