Задачу то решил при помощи подсказок валидатора, но только прибавилось сомнений и немонимания. Вот их смысл:.. Я,так же как и мы все по условию задачи, завел мапу: private transient HashMap<E, Object> map; Это типа наша подкапотная база данных для нашей самодельной коллекции AmigoSet и далее работаю при реализации всех методов НА НЕЙ. везде методы нашей коллекции AmigoSet должны работать с какой то структурой данных. И они работают с нашей внутренней базой данных - map Вот они все - 5 методов ниже. Тут для меня все просто и логично: public boolean add (E e) { return null== map.put(e, PRESENT); } @Override public Iterator iterator() { return map.keySet().iterator(); } @Override public int size() { return map.size(); } @Override public boolean isEmpty() { return map.isEmpty(); } @Override public void clear() { map.clear(); } Но с чем работают эти оставшиеся ниже 2 метода??. Понятно что мы их имеем в наследство от AbstractSet. Но с чем они работают, к чему обращаются за данными для проверки содержания (contains) (remove)?? Они же должны как то знать про map и взаимодействовать с ней по идее... @Override public boolean contains(Object o) { return super.contains(o); } @Override public boolean remove(Object o) { return super.remove(o); } Помогите разобраться, натолкните на мысль. (Документацию посмотрел - яснее не стало)