private static LinkedList<TemplateContextType> buildOrderedContextTypes() {
   final TemplateContextType[] typeCollection = getAllContextTypes();
   LinkedList<TemplateContextType> userDefinedExtensionsFirst =
       new LinkedList<TemplateContextType>();
   for (TemplateContextType contextType : typeCollection) {
     if (contextType.getClass().getName().startsWith(Template.class.getPackage().getName())) {
       userDefinedExtensionsFirst.addLast(contextType);
     } else {
       userDefinedExtensionsFirst.addFirst(contextType);
     }
   }
   return userDefinedExtensionsFirst;
 }