Since the HL7 specification demands a tolerance in respect to missing or unexpected objects, we do not care much about whether a segment is marked as "required" in the specifications. It is rather up to the application to reject incomplete messages, while unexpected objects should just be ignored.