public function nonEmpty($subject) : bool
    {
        if (
            $subject instanceof \ArrayAccess
            && !($subject instanceof \Countable) && !($subject instanceof \Traversable)
        ) {
            return false;
        }
        return !$this->empty($subject);
    }
public function nonEmpty($subject) : bool
    {
        if (
            $subject instanceof \ArrayAccess
            && !($subject instanceof \Countable) && !($subject instanceof \Traversable)
        ) {
            return false;
        }
        return !$this->empty($subject);
    }
public function nonEmpty ( $ subject ) : bool { if ( $ subject instanceof \ ArrayAccess && ! ( $ subject instanceof \ Countable ) && ! ( $ subject instanceof \ Traversable ) ) { return false ; } return ! $ this -> empty ( $ subject ) ; }
Subject is not falsy or array|object is non-empty.

NB: Stringed zero - '0' - _is_ non-empty.

ArrayAccess that is neither Countable nor Traversable fails validation,
because no means of accessing it's content.

@param mixed $subject

@return bool
Subject is not falsy or array|object is non - empty .