public final Shape<?> findShapeAtPoint(final int x, final int y)
    {
        if (isVisible())
        {
            final NFastArrayList<Layer> layers = getChildNodes();

            if (null != layers)
            {
                final int size = layers.size();

                for (int i = size - 1; i >= 0; i--)
                {
                    final Layer layer = layers.get(i);

                    if (null != layer)
                    {
                        final Shape<?> shape = layer.findShapeAtPoint(x, y);

                        if (null != shape)
                        {
                            return shape;
                        }
                    }
                }
            }
        }
        return null;
    }
public final Shape < ? > findShapeAtPoint ( final int x , final int y ) { if ( isVisible ( ) ) { final NFastArrayList < Layer > layers = getChildNodes ( ) ; if ( null != layers ) { final int size = layers . size ( ) ; for ( int i = size - 1 ; i >= 0 ; i -- ) { final Layer layer = layers . get ( i ) ; if ( null != layer ) { final Shape < ? > shape = layer . findShapeAtPoint ( x , y ) ; if ( null != shape ) { return shape ; } } } } } return null ; }
Given a set of (x,y) coordinates, returns the {@link Shape} that is matched.
The {@link Shape} returned will be the one found in the upper {@link Layer}
Return null if no {@link Shape} is detected or found.

@param x
@param y
@return Shape