Design
It is easy to rely on throwing exceptions when an operation fails. However, the Operation Result pattern is an alternative way of communicating success or failure between components when you don't want to, or can't, use exceptions.
To be used effectively, a method must return an object containing one or more elements presented in the Goal section. As a rule of thumb, a method returning an operation result should not throw an exception. This way, consumers don't have to handle anything else other than the operation result itself. For special cases, you could allow exceptions to be thrown, but at that point, it would be a judgment call based on clear specifications or facing a real problem.
Instead of walking you through all of the possible UML diagrams, let's jump into the code and explore multiple smaller examples after taking a look at the basic sequence diagram that describes the simplest form of this pattern, applicable to all examples: