@Override
  @Beta
  public <T> T Spy(T obj) {
    throw invalidMockCreation();
  }
Creates a spy wrapping a provided instance.

Example:

<pre>
  def person = Spy(new Person()) // type is Person.class, name is "person"
</pre>

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

@since 1.1

@param obj the instance to spy
@param <T> the class type of the spy

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