This paper deals with the use of software diversity, specifically, N-version programming (NVP) in object-oriented (OO) systems. We formulate the problem of faulty version recovery and show how our NVP scheme, developed recently, can be extended to solve it. Our approach relies on using the abstract version state, which represents a common general description of the states of all correct version objects. The recovery consists in mapping the state of a correct version onto the state of the faulty version via the abstract state. We introduce a formal description of our model and show that many ideas related to object state abstraction can be found in the existing research on OO programming. We discuss extensions of LAYOM and PSL as promising practical approaches for developing recovery features in OO programming. As an alternative solution, we propose a meta-object architecture and a related protocol which can facilitate the solution of the object version recovery problem. The paper finishes with a brief discussion of engineering steps which have to be done for developing recoverable version objects and of some approaches which can improve the reusability of the scheme proposed.