### Question:
ScriptMixin implements InvocationHandler, ScriptReloadable, ScriptRedirect, ScriptAttributes, ScriptAttributes.All { @Override public Object invoke( Object proxy, Method method, Object[] objects ) throws Throwable { Object result = ( (Invocable) engine ).invokeFunction( method.getName(), objects ); return castInvocationResult( method.getReturnType(), result ); } ScriptMixin( @Structure PolygeneSPI spi,
                        @This Object thisComposite,
                        @State StateHolder state,
                        @Structure Layer layer,
                        @Structure Module module,
                        @Structure Application application ); @Override Object invoke( Object proxy, Method method, Object[] objects ); @Override void reloadScript(); @Override void setStdOut( Writer writer ); @Override void setStdErr( Writer writer ); @Override void setStdIn( Reader reader ); @Override Object getAttribute( String name ); @Override Object getEngineAttribute( String name ); @Override Object getGlobalAttribute( String name ); @Override void setEngineAttribute( String name, Object value ); @Override void setGlobalAttribute( String name, Object value );  }### Answer:
@Test public void testInvoke() throws Throwable { DomainType domain1 = transientBuilderFactory.newTransient( DomainType.class ); assertThat(domain1.do1("her message"), equalTo("[her message]") ); }