@Override
  public void addReference(final IReference reference) throws CouldntSaveDataException {
    Preconditions.checkNotNull(reference, "IE00221: Reference argument can not be null");
    Preconditions.checkArgument(
        !references.contains(reference), "IE00222: Reference can not be added twice");
    provider.addReference(this, reference.getTarget(), reference.getType());
    references.add(reference);

    for (final INaviOperandTreeNodeListener listener : listeners) {
      try {
        listener.addedReference(this, reference);
      } catch (final Exception exception) {
        CUtilityFunctions.logException(exception);
      }
    }
  }
  @Override
  public void deleteReference(final IReference reference) throws CouldntDeleteException {
    Preconditions.checkNotNull(reference, "IE00223: Reference argument can not be null");
    Preconditions.checkArgument(
        references.contains(reference), "IE00224: No such reference at this node");
    provider.deleteReference(this, reference.getTarget(), reference.getType());

    references.remove(reference);

    for (final INaviOperandTreeNodeListener listener : listeners) {
      try {
        listener.removedReference(this, reference);
      } catch (final Exception exception) {
        CUtilityFunctions.logException(exception);
      }
    }
  }