TraitRecordJ: A programming language with traits and records