code: public JScoreElement getScoreElementAt(Point location) {
  		if (location == null)
  			return null;
  		if (getBoundingBox().contains(location))
  			return this;
  		else {
  			if (m_jAnnotations != null) {
                  for (Object m_jAnnotation : m_jAnnotations) {
                      JAnnotation ja = (JAnnotation) m_jAnnotation;
                      if (ja.getBoundingBox().contains(location))
                          return ja;
                  }
  			}
  			if (m_jChordName != null) {
  				if (m_jChordName.getBoundingBox().contains(location))
  					return m_jChordName;
  			}
  			if (m_jDecorations != null) {
                  for (Object m_jDecoration : m_jDecorations) {
                      JDecoration jd = (JDecoration) m_jDecoration;
                      if (jd.getBoundingBox().contains(location))
                          return jd;
                  }
  			}
  			if (m_jDynamic != null) {
  				if (m_jDynamic.getBoundingBox().contains(location))
  					return m_jDynamic;
  			}
  		}
  		return null;
  	}
docs: Returns the score element whose bouding box contains the
  given location.
  @param location A location.
  @return The score element whose bouding box contains the
  given location. <TT>this</TT> can be returned or one of the
  sub <TT>JScoreElement</TT> contained in this one. <TT>null</TT>
  is returned if no matching element has been found.