In that case wouldnt you need a type differentiator string like 'property' or 'name' or 'http-equiv' as page service has? This could be another key in the value whether the value is an array or an instance of ArbitraryProperty