code: 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;
      }
docs: 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