It is here because Subject needs to pretend to be a bunch of things. All the code for these things were crowding Subject itself, so I extracted classes to deal with all the things it does: configuring and instantiating the wrapped object, calling methods on it, running expectation matches against it and finally providing proxying to its array access implementation.