public void register(Object owner, T toRegister, Class... classes)
    {
        for (Class clazz : classes)
        {
            provided.put(clazz, toRegister);
        }
        provided.put(toRegister.getClass(), toRegister);
        List<T> list = providedByOwner.get(owner);
        if (list == null)
        {
            list = new ArrayList<>();
            providedByOwner.put(owner, list);
        }
        list.add(toRegister);
    }