Scusa ma così non ha molto senso (né è granché chiaro). Se un ArrayList è parametrizzato <Task> o <SendTask> e questi due tipi sono sotto-tipi di questa ProcElement (o come l'hai chiamata) .... allora vuoi dire che il ArrayList così parametrizzato NON può contenere oggetti istanziati come ProcElement.
ArrayList<Task> può solo contenere oggetti Task o sotto-tipi di Task. Non qualcosa che è un super-tipo di Task.