An immutable, strict version of OpenStruct