I have a generic class ObjectManager<T> which essentially offers limited functionality of an ArrayList:

Java Code:
public class ObjectManager<T> {
	protected ArrayList<T> objects = new ArrayList<T>();
	
	public void register(T o) {
		objects.add(o);
	}
}
Now, I would like to be able to have a class be Manager for several types of objects. The only solution I have come up with so far is instroducing a generic DoubleManager:

Java Code:
public abstract class DoubleObjectManager<T1, T2> extends ObjectManager<T2> {
	private ObjectManager<T1> manager = new ObjectManager<T1>();
	
	public void register(T1 object) {
		manager.register(object);
	}
}
This way i would have to introduce a new Manager for each number of types that it should handle (TripleObjectHandler<T1,T2,T3>, ...), but at least it looks pretty elegant.
The issue with this is that it leads to a nameclash. Both the register in the Manager and in the DoubleManager have the same erasure, which leads to a Name Clash.

Is there any way to solve this (without losing the generality of the method name register)? Or is there a better solution to the problem in the first place?