I've noticed quite a few places in the code where the implementation type is being used to declare variables, not the interface type, e.g.:
ArrayList myList = new ArrayList();
List myList = new ArrayList();
MessageImpl message = new MessageImpl(JBossTextMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1);
Message message = new MessageImpl(JBossTextMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1);