anchor.diff:      return item;
     }
   
  -  E get last => _list.last;
  +  E get last => valueConverter.convertValue(_list.last);
   
     void insertRange(int start, int length, [E initialValue]){
       _list.insertRange(start, length, initialValue);
  
positive.code:     setDirty(null);
    }
  
    E operator[](int index) {
      return valueConverter.convertValue(_list[index]);
    }
  
  
  }
negative.code:       isEmbeddedObject = true;
      }
      valueConverter = new _ValueConverter(this);
  
      // Convert all values to actual objects. Is there a reason why we shouldn't do that?
      // It seems pointless to convert when someone is calling [] or .first, or .last etc.
      if (_list.length > 0) {
        var actualList = [];
        _list.forEach((dbRef) {
          actualList.add(valueConverter.convertValue(dbRef));
        });
        _list = actualList;
      }
    }
    factory PersistentList(BasePersistentObject parent, String elementType, String pathToMe) {
      PersistentList result = parent._compoundProperties[pathToMe];
  