### Question:
AbstractResourceReference implements ResourceReference { protected void setParameter(String name, Object value) { this.parameters.remove(name); addParameter(name, value); }  @Override ResourceType getType(); void setType(ResourceType type); @Override void addParameter(String name, Object value); @Override Map<String, List<String>> getParameters(); @Override List<String> getParameterValues(String name); @Override String getParameterValue(String name); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object object);  }### Answer:
@Test void setParameter() { TestableResourceReference reference = new TestableResourceReference(); reference.addParameter("param", "value1"); assertEquals(Arrays.asList("value1"), reference.getParameterValues("param")); reference.addParameter("param", "value2"); assertEquals(Arrays.asList("value1", "value2"), reference.getParameterValues("param")); reference.setParameter("param", "value3"); assertEquals(Arrays.asList("value3"), reference.getParameterValues("param")); }