code: @SuppressWarnings("unchecked")
    protected <E> List<E> asList(final Object obj, final org.cp.elements.util.sort.annotation.Sortable sortableMetaData) {
      try {
        Method asList = obj.getClass().getMethod(sortableMetaData.listMethod());
        List<E> list = (List<E>) asList.invoke(obj);
        return ObjectUtils.defaultIfNull(list, Collections.<E>emptyList());
      }
      catch (Exception e) {
        throw new SortException(String.format(
          "Error occurred getting the list of elements to sort from the (%1$s) method on object of type (%2$s)!",
            sortableMetaData.listMethod(), obj.getClass().getName()), e);
      }
    }
docs: Gets the list of elements to sort from the specified @Sortable annotated object based on the specified @Sortable
  annotation meta-data.
  
  @param <E> the Class type of the elements in the list.
  @param obj the @Sortable annotated object containing the list of elements to sort.
  @param sortableMetaData the @Sortable annotation meta-data indicating the list method return the collection
  of elements to sort.
  @return the list of elements to sort.
  @see org.cp.elements.util.sort.annotation.Sortable#listMethod()
  @see java.lang.Class#getMethod(String, Class[])
  @see java.lang.reflect.Method#invoke(Object, Object...)
  @see java.util.Collections#emptyList()