code: @SuppressWarnings("unchecked")
    protected <E> List<E> asList(final Object obj, final org.cp.elements.util.search.annotation.Searchable searchableAnnotation) {
      try {
        Method listMethod = ClassUtils.getMethod(obj.getClass(), searchableAnnotation.listMethod());
        List<E> collection = (List<E>) listMethod.invoke(obj);
        return ObjectUtils.defaultIfNull(collection, Collections.<E>emptyList());
      }
      catch (Exception e) {
        throw new SearchException(String.format(
          "Error occurred getting the list of elements to search from the (%1$s) method on object of type (%2$s)!",
            searchableAnnotation.listMethod(), obj.getClass().getName()), e);
      }
    }
docs: Converts the given object into a searchable list of elements as specified by the @Searchable annotation meta-data
  'listMethod' attribute value.
  
  @param <E> the Class type of the elements in the list.
  @param obj the object to convert into a searchable list of elements.
  @param searchableAnnotation the @Searchable annotation meta-data specifying the method on the object with the
  'listMethod' attribute that converts the object into a searchable list of elements.
  @return a searchable list of elements from the given object.
  @see java.lang.reflect.Method#invoke(Object, Object...)
  @see org.cp.elements.lang.ClassUtils#getMethod(Class, String, Class[])
  @see org.cp.elements.util.search.annotation.Searchable