public <T extends GraphItem> void addCapability( CapabilityName<? super T> name, T capability ) {
		if( getCapability( name ) != null ) {
			throw new IllegalStateException( "there is already a capability for " + name );
		}
		setCapability( name, capability );
		addChild( capability );
	}