class ImmutableAppendedList implements List<T> {

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("[");

        Iterator<T> i = iterator();
        boolean hasNext = i.hasNext();
        while (hasNext) {
            T o = i.next();
            sb.append(o == this ? "(this Collection)" : String.valueOf(o));
            hasNext = i.hasNext();
            if (hasNext) sb.append(", ");
        }

        sb.append("]");
        return sb.toString();
    }

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

}