I think we allow arrays to be used inside the objects because some applications find that easier to work with, so doing a conversion in the constructor would defeat the purpose of having them in the first place. Remember that ->headers can be accessed by user code.