private void validate(IMockObject mockObject, MockInteraction mockInteraction) {
    for (IInvocationConstraint constraint : mockInteraction.getConstraints()) {
      if (constraint instanceof EqualMethodNameConstraint) {
        EqualMethodNameConstraint methodConstraint = (EqualMethodNameConstraint) constraint;
        String methodName = methodConstraint.getMethodName();
        validateNonFinalMethod(mockObject, methodName);
      }
      if (constraint instanceof EqualPropertyNameConstraint) {
        EqualPropertyNameConstraint propNameConstraint = (EqualPropertyNameConstraint) constraint;
        validateProperty(mockObject, propNameConstraint);
      }
    }
  }
{@link ByteBuddyMockInteractionValidator} validates the {@link IMockInteraction} for {@link ByteBuddyMockMaker} mocks.

<ul>
  <li>Checks for method interactions on final methods</li>
  <li>Checks for property interactions on final methods</li>
</ul>

<p>Implementation note: The {@link ByteBuddyMockFactory} create a single instance for each mocked class
and the same validation is used for multiple mocks of the same class.

@author Andreas Turban
spock-core/src/main/java/org/spockframework/mock/runtime/ByteBuddyMockInteractionValidator.java