@Override
  public void validateMockInteraction(IMockObject mockObject, IMockInteraction mockInteractionParam) {
    requireNonNull(mockObject);
    requireNonNull(mockInteractionParam);
    Object instance = requireNonNull(mockObject.getInstance());

    if (mockObject.getConfiguration().getImplementation() == MockImplementation.GROOVY) {
      //We do not validate final methods for Groovy mocks, because final mocking can be done with the Groovy MOP.
      return;
    }

    initializeClassData(instance);

    validate(mockObject, (MockInteraction) mockInteractionParam);
  }
{@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