");    assertPrototypes(prototype.getOriginalParameterTypes(),      InferredStandardParameter.class,      "java.lang.String",      "firstarg",      InferredStandardParameter.class,      "int",      "secondarg",      InferredStandardParameter.class,      "float",      "thirdarg",      InferredStandardParameter.class,      "java.lang.Object[]",      "fourtharg");    assertPrototypes(prototype.getInferredParameterTypes(),      new Object[] {        InferredStandardParameter.class,        "java.lang.String",        "firstarg",        InferredStandardParameter.class,        "int",        "secondarg",        InferredValuedParameter.class,        "float",        "thirdarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "java.lang.Object[]",        "fourtharg",    },      new Object[] {        InferredValuedParameter.class,        "java.lang.String",        "firstarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "int",        "secondarg",        InferredStandardParameter.class,        "float",        "thirdarg",        InferredStandardParameter.class,        "java.lang.Object[]",        "fourtharg",    },      new Object[] {        InferredValuedParameter.class,        "java.lang.String",        "firstarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "int",        "secondarg",        InferredValuedParameter.class,        "float",        "thirdarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "java.lang.Object[]",        "fourtharg",    });   }    @Test   public void createPrototypeFromJvmModel_varArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    //    InferredPrototype prototype = this.provider.createPrototypeFromJvmModel(this.context, qn, true, this.jvmParameters);    assertNotNull(prototype);    assertEquals("myfct", prototype.getActionName().getActionName());    assertSameJvmFormalParameters(this.jvmParameters, prototype.getFormalParameters());    assertEquals(      "java.lang.String,int,float,java.lang.Object*",      prototype.getFormalParameterTypes().toString());    assertContainsStrings(      prototype.getParameterTypeAlternatives(),      "java.lang.String,int,float,java.lang.Object*",      "java.lang.String,int,java.lang.Object*",      "int,float,java.lang.Object*",      "int,java.lang.Object*");    assertPrototypes(prototype.getOriginalParameterTypes(),      InferredStandardParameter.class,      "java.lang.String",      "firstarg",      InferredStandardParameter.class,      "int",      "secondarg",      InferredStandardParameter.class,      "float",      "thirdarg",      InferredStandardParameter.class,      "java.lang.Object[]",      "fourtharg");    assertPrototypes(prototype.getInferredParameterTypes(),      new Object[] {        InferredStandardParameter.class,        "java.lang.String",        "firstarg",        InferredStandardParameter.class,        "int",        "secondarg",        InferredValuedParameter.class,        "float",        "thirdarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "java.lang.Object[]",        "fourtharg",    },      new Object[] {        InferredValuedParameter.class,        "java.lang.String",        "firstarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "int",        "secondarg",        InferredStandardParameter.class,        "float",        "thirdarg",        InferredStandardParameter.class,        "java.lang.Object[]",        "fourtharg",    },      new Object[] {        InferredValuedParameter.class,        "java.lang.String",        "firstarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "int",        "secondarg",        InferredValuedParameter.class,        "float",        "thirdarg",        "io.sarl.tests.Stub" + index + "#MYFCT_0",        InferredStandardParameter.class,        "java.lang.Object[]",        "fourtharg",    });   }    @Test   public void getPrototypesQualifiedActionName_noCreatedPrototype() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    //    Iterable<InferredPrototype> iterable = this.provider.getPrototypes(this.context, qn);    assertNotNull(iterable);    assertFalse(iterable.iterator().hasNext());   }    @Test   public void getPrototypesQualifiedActionName_createdPrototype_noVarArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    InferredPrototype expected = this.provider.createPrototypeFromSarlModel(this.context, qn, false, this.sarlParameters);    //    Iterable<InferredPrototype> iterable = this.provider.getPrototypes(this.context, qn);    assertNotNull(iterable);    Iterator<InferredPrototype> iterator = iterable.iterator();    assertTrue(iterator.hasNext());    InferredPrototype prototype = iterator.next();    assertSame(expected, prototype);    assertFalse(iterator.hasNext());   }    @Test   public void getPrototypesQualifiedActionName_createdPrototype_varArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    InferredPrototype expected = this.provider.createPrototypeFromSarlModel(this.context, qn, true, this.sarlParameters);    //    Iterable<InferredPrototype> iterable = this.provider.getPrototypes(this.context, qn);    assertNotNull(iterable);    Iterator<InferredPrototype> iterator = iterable.iterator();    assertTrue(iterator.hasNext());    InferredPrototype prototype = iterator.next();    assertSame(expected, prototype);    assertFalse(iterator.hasNext());   }    @Test   public void getPrototypesQualifiedActionNameActionParameterTypes_noCreatedPrototype() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    ActionParameterTypes types = this.provider.createParameterTypesFromSarlModel(false, this.sarlParameters);    //    InferredPrototype prototype = this.provider.getPrototypes(this.context, qn, types);    assertNull(prototype);   }    @Test   public void getPrototypesQualifiedActionNameActionParameterTypes_createdPrototype_noVarArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    ActionParameterTypes types = this.provider.createParameterTypesFromSarlModel(false, this.sarlParameters);    InferredPrototype expected = this.provider.createPrototypeFromSarlModel(this.context, qn, false, this.sarlParameters);    //    InferredPrototype prototype = this.provider.getPrototypes(this.context, qn, types);    assertNotNull(prototype);    assertSame(expected, prototype);   }    @Test   public void getPrototypesQualifiedActionNameActionParameterTypes_createdPrototype_varArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    ActionParameterTypes types = this.provider.createParameterTypesFromSarlModel(true, this.sarlParameters);    InferredPrototype expected = this.provider.createPrototypeFromSarlModel(this.context, qn, true, this.sarlParameters);    //    InferredPrototype prototype = this.provider.getPrototypes(this.context, qn, types);    assertNotNull(prototype);    assertSame(expected, prototype);   }    @Test   public void resetPrototypes_noCreatedProtype() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    ActionParameterTypes types = this.provider.createParameterTypesFromSarlModel(false, this.sarlParameters);    assertNotNull(types);    //    assertFalse(this.provider.getPrototypes(this.context, qn).iterator().hasNext());    this.context.release();    assertFalse(this.provider.getPrototypes(this.context, qn).iterator().hasNext());   }    @Test   public void resetPrototypes_createdProtype_noVarArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    ActionParameterTypes types = this.provider.createParameterTypesFromSarlModel(false, this.sarlParameters);    assertNotNull(types);    InferredPrototype prototype = this.provider.createPrototypeFromSarlModel(this.context, qn, false, this.sarlParameters);    assertNotNull(prototype);    //    assertTrue(this.provider.getPrototypes(this.context, qn).iterator().hasNext());    this.context.release();    assertFalse(this.provider.getPrototypes(this.context, qn).iterator().hasNext());   }    @Test   public void resetPrototypes_createdProtype_varArg() {    JvmIdentifiableElement container = createJvmIdentifiableElementStub();    QualifiedActionName qn = this.provider.createQualifiedActionName(container, "myfct");    ActionParameterTypes types = this.provider.createParameterTypesFromSarlModel(true, this.sarlParameters);    assertNotNull(types);    InferredPrototype prototype = this.provider.createPrototypeFromSarlModel(this.context, qn, true, this.sarlParameters);    assertNotNull(prototype);    //    assertTrue(this.provider.getPrototypes(this.context, qn).iterator().hasNext());    this.context.release();    assertFalse(this.provider.getPrototypes(this.context, qn).iterator().hasNext());   }   }  