Does this smell? I have a few properties you can only set once. They can be set at any time during the objects existence and can not be undone. I implement then like
if FooThingy is a value object like an int it will be 0 initialized instead of null. For the rest it looks okay