If the index turns out to be out of the range of the ```lineItem``` array, should that be logged? If you did not check for a valid index, and it was bad, there would be an exception raised for an invalid index. Perhaps skip the index check and try/catch IndexOutOfBoundsException and log that?

It's just a question about the reliability of the index of 'user:Product' in the header object. I'm not familiar with the overall effort so I can't recommend that something be changed here. It seems that if ```header``` and ```lineItem``` are out of sync somehow that should be noted to help in debugging.