@Override
    public final Product lookupProduct(String productId) {
	if (productId == null) {
	    throw new IllegalArgumentException();
	}
	
	Product product = null;
	
	for (int i = 0; i < numProducts; i++) {
	    if (products[i].getId().equalsIgnoreCase(productId)) {
		product = products[i].getProduct();
		if (product == null) {
		    product = allocateProduct(products[i]);
		    products[i].setProduct(product);
		}
		break;
	    }
	}
	
	if (product == null) {
	    throw new IllegalArgumentException();   // This should be something else...
	}
	
	return product;
    }