Object result = null; Object value = null; while (!((value = stack.peek()).getClass().isAssignableFrom(type))) { stack.pop(); if (value != null && value.getClass().isAssignableFrom(type)) result = value; return result; ...
return !isEmpty(stack) ? stack.peek() : null;