Во-первых, я не уверен, является ли X коллекцией объектов ArrayList или X является коллекцией, которая изменяется в соответствии с элементами, добавленными в A. Вы должны добавить немного безопасности типов (и самодокументирование) в свой код, т.е.
final List<String> x = new ArrayList<String>();
final List<String> a = new ArrayList<String>();
a.add("first");
assert(a.size() == 1);
Два набора (с символом s) полны наборов, «подкрепленных» другим, например,
Collections.unmodifiableCollection(Collection<? extends T> c)