code: @Beta
    public <T> T GroovyMock(
      @NamedParams({
        @NamedParam(value = "name", type = String.class),
        @NamedParam(value = "additionalInterfaces", type = List.class),
        @NamedParam(value = "defaultResponse", type = IDefaultResponse.class),
        @NamedParam(value = "verified", type = Boolean.class),
        @NamedParam(value = "useObjenesis", type = Boolean.class),
        @NamedParam(value = "global", type = Boolean.class)
      })
        Map<String, Object> options,
      @DelegatesTo.Target
        Class<T> type,
      @DelegatesTo(strategy = Closure.DELEGATE_FIRST, genericTypeIndex = 0)
      @ClosureParams(SecondParam.FirstGenericType.class)
        Closure interactions) {
      invalidMockCreation();
      return null;
    }
docs: Creates a Groovy mock with the specified options, type, and interactions. If enclosed in a variable assignment, the
  variable name will be used as the mock's name.
  
  Example:
  
  <pre>
  // type is Person.class, name is "myPerson", returns hard-coded value {@code name}, expects one call to {@code sing()}
  def person = GroovyMock(Person, name: "myPerson") {
  name << "Fred"
  1 * sing()
  }
  </pre>
  
  @param options options for creating the Groovy mock (see {@link org.spockframework.mock.IMockConfiguration} for available options})
  @param type the interface or class type of the mock
  @param interactions a description of the Groovy mock's interactions
  @param <T> the interface or class type of the Groovy mock
  
  @return a Groovy mock with the specified options, type, and interactions