public <T extends Component> void removeComponent(UUID entity,
            T component) {
        synchronized (componentStores) {
            HashMap<UUID, ? extends Component> store = componentStores
                    .get(component.getClass());

            if (store == null) {
                throw new IllegalArgumentException(
                        "REMOVE FAIL: there are no entities with a Component of class: "
                        + component.getClass());
            }

            T result = (T) store.remove(entity);
            if (result == null) {
                throw new IllegalArgumentException("REMOVE FAIL: " + entity
                        + "(name:" + nameFor(entity) + ")"
                        + " does not possess Component of class\n   missing: "
                        + component.getClass());
            }
        }
    }