class TagManager {
  public TagManager(Singletons.Global g) {
  }

  public static TagManager v() {
    return G.v().soot_tagkit_TagManager();
  }

  private TagPrinter tagPrinter = new StdTagPrinter();

  /**
   * Returns the Tag class with the given name.
   *
   * (This does not seem to be necessary.)
   */
  public Tag getTagFor(String tagName) {<FILL_FUNCTION_BODY>}

  /** Sets the default tag printer. */
  public void setTagPrinter(TagPrinter p) {
    tagPrinter = p;
  }

  /** Prints the given Tag, assuming that it belongs to the given class and field or method. */
  public String print(String aClassName, String aFieldOrMtdSignature, Tag aTag) {
    return tagPrinter.print(aClassName, aFieldOrMtdSignature, aTag);
  }
}

    try {
      Class<?> cc = Class.forName("soot.tagkit." + tagName);
      return (Tag) cc.newInstance();
    } catch (ClassNotFoundException e) {
      return null;
    } catch (IllegalAccessException e) {
      throw new RuntimeException();
    } catch (InstantiationException e) {
      throw new RuntimeException(e.toString());
    }
  
<no_super_class>