Validate that an implementation is provided for the interaction
2. Validate that the return type the interaction matches the expectations from the annotation
3. Check if all the required events are provided
4. Check if all ingredients are provided
5. Check if the provided ingredients are of the same type as the expected ingredients