@Override
    public boolean equals( Object obj )
    {
        if ( this == obj )
        {
            return true;
        }
        if ( obj == null )
        {
            return false;
        }
        if ( getClass() != obj.getClass() )
        {
            return false;
        }

        Key other = (Key) obj;

        if ( this.annotatedElementType == null )
        {
            if ( other.getAnnotatedElementType() != null )
            {
                return false;
            }
        }
        else if ( !this.annotatedElementType.equals( other.getAnnotatedElementType() ) )
        {
            return false;
        }

        if ( this.annotationType == null )
        {
            if ( other.getAnnotationType() != null )
            {
                return false;
            }
        }
        else if ( !this.annotationType.equals( other.getAnnotationType() ) )
        {
            return false;
        }

        return true;
    }