Почему не проходит по второму условию - В случае возникновения исключений в процессе клонирования должно быть брошено исключение InternalError.
Пробовал двадцать разных вариантов.
Последний - такой:
public Object clone()
{
AmigoSet<E> amigoSet = new AmigoSet<>();
try
{
amigoSet.addAll(this);
amigoSet.map.putAll(this.map);
}
catch (Exception ex)
{
throw new InternalError();
}
return amigoSet;
}