Stay alert for a wrapper solution for the Roles. Unfortunately many libraries claiming to do DCI ignores that object identity must be preserved for Roles. Ask the library author about wrappers if you're unsure, and if the answer isn't fully clear about preserved object identity for Roles (which isn't the same as object equality), the library is probably not doing true DCI.
Solving the object identity issue for today's popular programming languages is not that simple, so a library doing that will probably promote it in the documentation or on its webpage. That's not a rule of course, but the difference between someone who is creating a library for testing purposes and someone with in-depth knowledge of the DCI execution model, can be quite big.
The Existing DCI Implementations page on this site is a reliable source of proper DCI implementations.