private void checkCollisions(JixelEntity entity) {
		List<JixelEntity> collisions = new ArrayList<JixelEntity>();
		JixelCollidable collidableEntity = ((JixelCollidable) entity);

		for (JixelEntity e : entityList) {
			if (e.intersects(entity)) {
				if (e != entity) {
					collisions.add(e);
				}
			}
		}
		List<JixelEntity> eCollisionList = entity.getCollisionList();

		synchronized (eCollisionList) {
			Iterator<JixelEntity> i = eCollisionList.iterator();
			while (i.hasNext()) {
				JixelEntity e = i.next();
				if (!collisions.contains(e)) {
					collidableEntity.onSeparation(e);
					i.remove();
				}
			}
			for (JixelEntity e : collisions) {
				collidableEntity.isColliding(e);
				if (!eCollisionList.contains(e)) {
					collidableEntity.onHit(e);
					eCollisionList.add(e);
				}
			}
		}
	}