code: /*
   * Copyright (c) 2008-2019 Emmanuel Dupuy.
   * This project is distributed under the GPLv3 license.
   * This is a Copyleft license that gives the user the right to use,
   * copy and modify the code freely for non-commercial purposes.
   */
  
  package org.jd.gui.spi;
  
  import org.jd.gui.api.API;
  import org.jd.gui.api.model.Container;
  import org.jd.gui.api.model.Type;
  
  import java.util.Collection;
  import java.util.regex.Pattern;
  
  public interface TypeFactory {
  	String[] getSelectors();
  
      Pattern getPathPattern();
  
  	/**
  	 * @return all root types contains in 'entry'
  	 */
  	Collection<Type> make(API api, Container.Entry entry);
  
  	/**
       * @param fragment @see jd.gui.api.feature.UriOpenable
  	 * @return if 'fragment' is null, return the main type in 'entry',
  	 *         otherwise, return the type or sub-type matching with 'fragment'
  	 */
  	Type make(API api, Container.Entry entry, String fragment);
  }
  