public Object getValue(final int index) {
        ExpressionSegment valueExpression = valueExpressions.get(index);
        if (valueExpression instanceof ParameterMarkerExpressionSegment) {
            return parameters.get(getParameterIndex((ParameterMarkerExpressionSegment) valueExpression));
        }
        if (valueExpression instanceof FunctionSegment) {
            return valueExpression;
        }
        return ((LiteralExpressionSegment) valueExpression).getLiterals();
    }
@Test
    void assertGetValueWhenParameterMarker() {
        Collection<ColumnAssignmentSegment> assignments = createParameterMarkerExpressionAssignmentSegment();
        String parameterValue1 = "test1";
        String parameterValue2 = "test2";
        List<Object> params = Arrays.asList(parameterValue1, parameterValue2);
        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, params, 0);
        Object valueFromInsertValueContext1 = onDuplicateUpdateContext.getValue(0);
        assertThat(valueFromInsertValueContext1, is(parameterValue1));
        Object valueFromInsertValueContext2 = onDuplicateUpdateContext.getValue(1);
        assertThat(valueFromInsertValueContext2, is(parameterValue2));
    }