Ребят подскажите такой момент: @Override public Object clone() throws CloneNotSupportedException { try { AmigoSet<E> amigoSet = new AmigoSet<E>(); amigoSet.map = new HashMap<>(this.map); return amigoSet; } catch (Throwable e) { throw new InternalError(); } } К примеру, я клонирую данные из переменной map своего оригинального объекта(который является коллекцией , назовем ее origAmigo) ,в переменную map нового объекта amigoSet (как указано в коде) Выполняя данную операцию, я ожидаю, что у моего нового объекта amigoSet, переменная map примет те же значения, что и у переменной map оригинала(origAmigo) И это действительно происходит, но, помимо клонирования значений map, у меня клонируются еще и объекты, содержащиеся в самом объекте origAmigo. Почему помимо map, у меня клонируются еще и значение коллекции origAmigo? надеюсь ясно сформулировал