@NullSafe
  protected static Class<?>[] resolveInterfaces(Object obj, Class<?>... interfaces) {
    Set<Class<?>> allImplementedInterfaces = new HashSet<>(getInterfaces(obj));

    allImplementedInterfaces.addAll(stream(nullSafeArray(interfaces, Class.class))
      .filter(ClassUtils::isInterface).collect(Collectors.toList()));

    return allImplementedInterfaces.toArray(new Class<?>[allImplementedInterfaces.size()]);
  }
@ NullSafe protected static Class < ? > [ ] resolveInterfaces ( Object obj , Class < ? > ... interfaces ) { Set < Class < ? > > allImplementedInterfaces = new HashSet < > ( getInterfaces ( obj ) ) ; allImplementedInterfaces . addAll ( stream ( nullSafeArray ( interfaces , Class . class ) ) . filter ( ClassUtils :: isInterface ) . collect ( Collectors . toList ( ) ) ) ; return allImplementedInterfaces . toArray ( new Class < ? > [ allImplementedInterfaces . size ( ) ] ) ; }
Resolves all the {@link Class interfaces} implemented by the given {@link Object object's} {@link Class}
including all the given {@link Class interfaces} in the {@link Class} array.

@param obj {@link Object} to evaluate.
@param interfaces array of {@link Class interfaces} to includes in the result.
@return an array of {@link Class interfaces} implemented by the given {@link Object object's} {@link Class}
including all {@link Class interfaces} from the given {@link Class} array.
@see org.cp.elements.lang.ClassUtils#getInterfaces(Object)
@see java.lang.Class
@see java.lang.Object