@SuppressWarnings("unchecked")
	public <T> EntityMetadata<T> getMetadataForEntity(final T obj) throws IllegalArgumentException {
		// Type erasure sucks
		return (EntityMetadata<T>)this.getMetadata(obj.getClass());
	}
@SuppressWarnings("unchecked")
	public <T> EntityMetadata<T> getMetadataForEntity(final T obj) throws IllegalArgumentException {
		
		return (EntityMetadata<T>)this.getMetadata(obj.getClass());
	}
@ SuppressWarnings ( "unchecked" ) public < T > EntityMetadata < T > getMetadataForEntity ( final T obj ) throws IllegalArgumentException { // Type erasure sucks
 return ( EntityMetadata < T > ) this . getMetadata ( obj . getClass ( ) ) ; }
Named differently so you don't accidentally use the Object form
@return the metadata for a kind of typed object.
@throws IllegalArgumentException if the kind has not been registered
Named differently so you don t accidentally use the Object form