test_class.declarator: engine
test_class.modifier: @Parameterized.Parameter(0)
      public
test_class.original_string: @Parameterized.Parameter(0)
      public MoshasEngine engine;
test_class.type: MoshasEngine
test_class.var_name: engine
test_class.file: moshas/src/test/java/net/unit8/moshas/MoshasEngineTest.java
test_class.identifier: MoshasEngineTest
test_case.body: @Test(expected = TemplateNotFoundException.class)
      public void test() {
          engine.describe("notfound", t -> {});
      }
test_case.class_method_signature: MoshasEngineTest.test()
test_case.full_signature: @Test(expected = TemplateNotFoundException.class) public void test()
test_case.identifier: test
test_case.invocations: describe
test_case.modifiers: @Test(expected = TemplateNotFoundException.class) public
test_case.parameters: ()
test_case.return: void
test_case.signature: void test()
focal_class.declarator: manager
focal_class.modifier: private final
focal_class.original_string: private final TemplateManager manager;
focal_class.type: TemplateManager
focal_class.var_name: manager
focal_class.declarator: describerCache = new ConcurrentHashMap<>()
focal_class.modifier: private final
focal_class.original_string: private final ConcurrentHashMap<String, ViewLogicDescriber> describerCache = new ConcurrentHashMap<>();
focal_class.type: ConcurrentHashMap<String, ViewLogicDescriber>
focal_class.var_name: describerCache
focal_class.file: moshas/src/main/java/net/unit8/moshas/MoshasEngine.java
focal_class.identifier: MoshasEngine
focal_class.class_method_signature: MoshasEngine.MoshasEngine(TemplateManager manager)
focal_class.full_signature: public  MoshasEngine(TemplateManager manager)
focal_class.identifier: MoshasEngine
focal_class.modifiers: public
focal_class.parameters: (TemplateManager manager)
focal_class.signature:  MoshasEngine(TemplateManager manager)
focal_class.class_method_signature: MoshasEngine.MoshasEngine()
focal_class.full_signature: public  MoshasEngine()
focal_class.identifier: MoshasEngine
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  MoshasEngine()
focal_class.class_method_signature: MoshasEngine.getTemplateManager()
focal_class.full_signature: public TemplateManager getTemplateManager()
focal_class.identifier: getTemplateManager
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: TemplateManager
focal_class.signature: TemplateManager getTemplateManager()
focal_class.class_method_signature: MoshasEngine.describeSnippet(Snippet snippet, ViewLogicDescriber describer)
focal_class.full_signature: private Snippet describeSnippet(Snippet snippet, ViewLogicDescriber describer)
focal_class.identifier: describeSnippet
focal_class.modifiers: private
focal_class.parameters: (Snippet snippet, ViewLogicDescriber describer)
focal_class.return: Snippet
focal_class.signature: Snippet describeSnippet(Snippet snippet, ViewLogicDescriber describer)
focal_class.class_method_signature: MoshasEngine.describe(String templateName, ViewLogicDescriber describer)
focal_class.full_signature: public Template describe(String templateName, ViewLogicDescriber describer)
focal_class.identifier: describe
focal_class.modifiers: public
focal_class.parameters: (String templateName, ViewLogicDescriber describer)
focal_class.return: Template
focal_class.signature: Template describe(String templateName, ViewLogicDescriber describer)
focal_class.class_method_signature: MoshasEngine.describe(String templateName, String selector, ViewLogicDescriber describer)
focal_class.full_signature: public Snippet describe(String templateName, String selector, ViewLogicDescriber describer)
focal_class.identifier: describe
focal_class.modifiers: public
focal_class.parameters: (String templateName, String selector, ViewLogicDescriber describer)
focal_class.return: Snippet
focal_class.signature: Snippet describe(String templateName, String selector, ViewLogicDescriber describer)
focal_class.class_method_signature: MoshasEngine.process(String templateName, IContext context)
focal_class.full_signature: public String process(String templateName, IContext context)
focal_class.identifier: process
focal_class.modifiers: public
focal_class.parameters: (String templateName, IContext context)
focal_class.return: String
focal_class.signature: String process(String templateName, IContext context)
focal_class.class_method_signature: MoshasEngine.process(String templateName, IContext context, Writer writer)
focal_class.full_signature: public void process(String templateName, IContext context, Writer writer)
focal_class.identifier: process
focal_class.modifiers: public
focal_class.parameters: (String templateName, IContext context, Writer writer)
focal_class.return: void
focal_class.signature: void process(String templateName, IContext context, Writer writer)
focal_method.body: public Template describe(String templateName, ViewLogicDescriber describer) {
          if (describer == null) {
              throw new IllegalArgumentException("describer is required");
          }
  
          Template template = manager.loadTemplate(templateName);
  
          describeSnippet(template, describer);
          // Mark selected elements
          Element root = template.getRootElement();
          root.children().forEach(Element::selected);
  
          manager.cacheTemplate(templateName, template);
          describerCache.put(templateName, describer);
          return template;
      }
focal_method.class_method_signature: MoshasEngine.describe(String templateName, ViewLogicDescriber describer)
focal_method.full_signature: public Template describe(String templateName, ViewLogicDescriber describer)
focal_method.identifier: describe
focal_method.invocations: loadTemplate describeSnippet getRootElement forEach children cacheTemplate put
focal_method.modifiers: public
focal_method.parameters: (String templateName, ViewLogicDescriber describer)
focal_method.return: Template
focal_method.signature: Template describe(String templateName, ViewLogicDescriber describer)