public void processMessage( String from, Object[] data )
    {
		if( data.length > 0 )
		{
			if( data[0].equals( "CA" )  )
			{
				Anchor lo    = (Anchor) data[3];
				Anchor hi    = (Anchor) data[4];
				int    depth = ((Number)data[5]).intValue();
				int    index = ((Number)data[6]).intValue();
				
				for( NTreeListener listener: listeners )
					listener.cellAdded( data[1], data[2], lo, hi, depth, index );
			}
			else if( data[0].equals( "CD" ) )
			{
				String msg = (String) data[2];
				
				for( NTreeListener listener: listeners )
					listener.cellData( data[1], msg, data[3] );
			}
			else if( data[0].equals( "CR" ) )
			{
				for( NTreeListener listener: listeners )
					listener.cellRemoved( data[1] );
			}
			else
			{
				// What to do ?

				if( data.length > 0 && data[0] instanceof String )
					throw new RuntimeException( "NTReeListenerProxy: uncaught message from "+
					        from+" : "+data[0]+"["+ data.length+"]" );
				else
					throw new RuntimeException( "NTreeListenerProxy: uncaught message from "+
					        from+" : ["+data.length+"]" );
			}
		}	    
    }