Adicionar ao carrinho

Bom pessoal abaixo está minha classe CarrinhoDeCompras.java
Minha dúvida está junto ao metodo abaixo em questão comentado no código java

package net.rcy.appwebpizzaria.modelo;

import java.util.ArrayList;
import java.util.List;

public class CarrinhoDeCompras {
	
	private List<ItemDoPedido> itens;
	private Cardapio cardapio;
	
	public CarrinhoDeCompras(){
		this.itens = new ArrayList();
		this.cardapio = new Cardapio();
	}
	
	public List<ItemDoPedido>getItens(){
		return itens;
	}
	
	public void adicionarIten(long codigo){ // recebe o código - ok entendi
		for(ItemDoPedido itemDoPedido:itens){ // percorre o arraylist "itens" e armazena o objeto da posição na var itemDoPedido - ok entendi
			if(itemDoPedido.getCodigo() == codigo){ // testa se o codigo do objeto na posição é igual ao codigo recebido como parametro - ok
				itemDoPedido.incrementarQuantidade(); // incrementa a quant desse objeto via metodo incrementaQuantidade() - ok
				return; // se encontrou sai do loop
			}
		} // abaixo vem minha duvida - se ele ja aumentou a quant no codigo acima e o objeto ja se encontrava na arraylist
		ItemDoPedido item = new ItemDoPedido(cardapio.getPizza(codigo)); // por que aqui ele cria novo objeto 
		itens.add(item); // e aqui adiciona esse novo objeto ao arraylist
	} // se no loop ele nao encontrasse um objeto com o codigo dado tudo bem ele adicionar ao arraylist no codigo após o loop. mas se no loop ele acha e adiciona, entao pra que criar outro e adicionar, logo que sai do loop?
	
	public double getTotal(){
		double total = 0;
		for(ItemDoPedido itemDoPedido : itens){
			total+=itemDoPedido.getTotal();
		}
		return total;
	}
	
}