public <T extends Component> T getComponent(UUID entity,
            Class<T> componentType) {
        synchronized (componentStores) {
            HashMap<UUID, ? extends Component> store = componentStores
                    .get(componentType);

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

            T result = (T) store.get(entity);

            if (result == null) {
                /**
                 * DEFAULT: normal debug info:
                 */
                throw new IllegalArgumentException("GET FAIL: " + entity
                        + "(name:" + nameFor(entity) + ")"
                        + " does not possess Component of class\n   missing: "
                        + componentType);
                /**
                 * OPTIONAL: more detailed debug info:
                 *
                 *
                 * StringBuffer sb = new StringBuffer(); for( UUID e :
                 * store.keySet() ) { sb.append( "\nUUID: "+e+" ===
                 * "+store.get(e) ); }
                 *
                 * throw new IllegalArgumentException("GET FAIL: " + entity +
                 * "(name:"+nameFor(entity)+")" + " does not possess Component
                 * of class\n missing: " + componentType + "TOTAL STORE FOR THIS
                 * COMPONENT CLASS : "+ sb.toString() );
                 */
            }

            return result;
        }
    }