Решение заключается в синхронизации методов getByName и emoveByName. Но почему нельзя синхронизировать по объекту container ? То есть этот код не проходит валидацию.
public GenericsBean getByName(String name) { synchronized (container) {
        return container.get(name);
    }
    }

    public GenericsBean removeByName(String name) { synchronized (container) {
        return container.remove(name);
    }
    }
а этот проходит
public synchronized GenericsBean getByName(String name) {return container.get(name); }

    public synchronized GenericsBean removeByName(String name) {
        return container.remove(name);
    }
container это поле класса где находятся эти методы
private Map<String, GenericsBean> container = new HashMap<String, GenericsBean>();