class ImmutableAppendedList implements List<T> {

    @Override
    public Object[] toArray() {
        Object[] result = new Object[size];
        int i = 0;
        for (T e : parent) {
            result[i++] = e;
        }
        result[i] = element;
        return result;
    }

    public  ImmutableAppendedList( List<T> parent,
                                  T element );

}