private GraphListener graphListener() {
		return new GraphListener() {
			private UmlDiagramListener[] listeners() {
				return umlDiagramListeners.toArray( new UmlDiagramListener[umlDiagramListeners.size()] );
			}

			@Override
			public void itemRemoved( Graph source, GraphItem graphItem ) {
				if( graphItem instanceof Item ) {
					Item item = (Item) graphItem;
					for( UmlDiagramListener listener : listeners() ) {
						listener.itemRemoved( DefaultUmlDiagram.this, item );
					}
				}
			}

			@Override
			public void itemAdded( Graph source, GraphItem graphItem ) {
				if( graphItem instanceof Item ) {
					Item item = (Item) graphItem;
					for( UmlDiagramListener listener : listeners() ) {
						listener.itemAdded( DefaultUmlDiagram.this, item );
					}
				}
			}
		};
	}