Ah true in that case you would provide a null key.  Maybe what we could do is add 2 more constructors.

public DefaultCommandMatcher(Class<? extends DataCommand> commandClass, String cacheName, Address origin, Object key)

public DefaultCommandMatcher(Class<? extends CacheRpcCommand> commandClass, String cacheName, Address origin)

public DefaultCommandMatcher(Class<? extends ReplicableCommand> commandClass)