class Tag {

  @Override
  public String toString() {
    String tagClassString;
    switch (tagClass) {
      case Tag.UNIVERSAL:
        tagClassString = "UNIVERSAL";
        break;
      case Tag.APPLICATION:
        tagClassString = "APPLICATION";
        break;
      case Tag.CONTEXT:
        tagClassString = "CONTEXT";
        break;
      case Tag.PRIVATE:
        tagClassString = "PRIVATE";
        break;
      default:
        tagClassString = "UNKWOWN";
        break;
    }
    return String.format(
        "TAG: size=%d Class=%s, Type=%s, Number=%X", tagSize, tagClassString, tagType, tagNumber);
  }

  public  Tag(int tagNumber, byte tagClass, TagType tagType, int tagSize);
  public  Tag(byte[] binary, int offset);

}