`Album`, `Artist` and `Song` contain different set of properties depending on the context in which they are. Also the data source can be either `Solarium_Document_ReadOnly` or deserialized object. 
I can create builder methods which just return empty stdObjects but I'm not sure if it's worth it for the sake of abstraction.