@Override
 protected Template[] getTemplates(String contextTypeId) {
   if (contextType.getId().equals(contextTypeId)) {
     Template[] computedTemplates = null;
     if (templates != null) {
       computedTemplates =
           templates.getTemplate().toArray(new Template[templates.getTemplate().size()]);
     }
     TemplateStore templateStore = WikiTextTemplateAccess.getInstance().getTemplateStore();
     if (templateStore != null) {
       Template[] customTemplates = templateStore.getTemplates(contextTypeId);
       if (customTemplates != null && customTemplates.length > 0) {
         if (computedTemplates == null) {
           computedTemplates = customTemplates;
         } else {
           List<Template> allTemplates =
               new ArrayList<>(computedTemplates.length + customTemplates.length);
           allTemplates.addAll(Arrays.asList(computedTemplates));
           allTemplates.addAll(Arrays.asList(customTemplates));
           computedTemplates = allTemplates.toArray(new Template[allTemplates.size()]);
         }
       }
     }
     if (computedTemplates != null) {
       return computedTemplates;
     }
   }
   return NO_TEMPLATES;
 }
 public MarkupTemplateCompletionProcessor() {
   ContextTypeRegistry contextTypeRegistry =
       WikiTextTemplateAccess.getInstance().getContextTypeRegistry();
   contextType =
       (SourceTemplateContextType)
           contextTypeRegistry.getContextType(SourceTemplateContextType.ID);
   if (contextType == null) {
     throw new IllegalStateException();
   }
 }