@SuppressWarnings("unchecked")
  public static DataSerializer register(Class<?> c) {
    return InternalDataSerializer.register((Class<? extends DataSerializer>) c, true);
  }
Registers a <code>DataSerializer</code> class with the data serialization framework. This
method uses reflection to create an instance of the <code>DataSerializer</code> class by
invoking its zero-argument constructor.

<P>

The <code>DataSerializer</code> instance will be consulted by the
{@link #writeObject(Object, DataOutput)} and {@link #readObject} methods. Note that no two
serializers can support the same class.
<P>

This method invokes the <Code>DataSerializer</code> instance's {@link #getSupportedClasses}
method and keeps track of which classes can have their instances serialized by by this data
serializer.

@param c the <code>DataSerializer</code> class to create and register with the data
       serialization framework.
@return the registered serializer instance

@throws IllegalArgumentException If <code>c</code> does not subclass
        <code>DataSerializer</code>, if <code>c</code> does not have a zero-argument
        constructor, if <code>id</code> is 0, if getSupportedClasses returns null or an empty
        array, if getSupportedClasses returns and array with null elements
@throws IllegalStateException if another serializer instance with id <code>id</code> has
        already been registered, if another serializer instance that supports one of this
        instances classes has already been registered, if an attempt is made to support any of
        the classes reserved by DataSerializer (see {@link #getSupportedClasses} for a list).
@see #getSupportedClasses
geode-core/src/main/java/org/apache/geode/DataSerializer.java