Thanks for your feedback. One thing to keep in mind is that we're not building an AST for the HTTP spec. We're building an interface that can be used for interacting with HTTP messages in PHP.

The headers here are modeled a bit after Go's headers (except instead of returning the first value as a string, we are concatenating them using a comma (a much better solution IMO)). Headers are referenced using a case insensitive value. All of the headers matching the case-insensitive value are returned. It's dead simple.

The grammar in the spec defines `message-header` as follows:

    message-header = field-name ":" [ field-value ]

So calling something a a value is not incorrect. Maybe HeaderFieldValuesInterface would be more appropriate.