private void endInstantiator() {
    final Class c = getClassFromStack();
    Class[] ifaces = c.getInterfaces();
    boolean found = false;
    for (Class clazz : ifaces) {
      if (clazz == DataSerializable.class) {
        found = true;
        break;
      }
    }
    if (!found) {
      throw new CacheXmlException(String.format(
          "The class %s, presented for instantiator registration is not an instance of DataSerializable and cannot be registered.",
          c.getName()));
    }

    // the next thing on the stack should be the Integer registration ID
    Object o = stack.peek();
    if (!(o instanceof Integer)) {
      String s = "The instantiator registration did not include an ID attribute.";
      throw new CacheXmlException(s);
    }

    Integer id = (Integer) stack.pop();
    SerializerCreation sc = (SerializerCreation) stack.peek();
    sc.registerInstantiator(c, id);
  }
Ending the instantiator registration should leave us with a class name and an Integer ID on the
stack. Pull them off, and setup the instantiator with an anonymous inner class to do the work.
geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java