@Beta
  public <T> T Spy(
    @DelegatesTo.Target
      T obj,
    @DelegatesTo(strategy = Closure.DELEGATE_FIRST)
    @ClosureParams(FirstParam.class)
      Closure interactions) {
    throw invalidMockCreation();
  }
Creates a spy with the specified interactions wrapping a provided instance.

Example:

<pre>
  def person = Spy(new Person()) {
    name >> "Fred"
  }
</pre>

You need to use the spy returned by this method instead of the original instance,
otherwise interactions won't be picked up.

@since 2.0

@param obj the instance to spy
@param interactions a description of the spy's interactions
@param <T> the class type of the spy

@return a spy with the specified interactions wrapping the provided instance
spock-core/src/main/java/spock/mock/MockingApi.java