public String toString() {
   StringBuffer sb = new StringBuffer();
   sb.append("[ftPictFmla]\n");
   sb.append("    .f2unknown     = ").append(HexDump.intToHex(field_1_unknown_int)).append("\n");
   if (field_2_refPtg == null) {
     sb.append("    .f3unknown     = ")
         .append(HexDump.toHex(field_2_unknownFormulaData))
         .append("\n");
   } else {
     sb.append("    .formula       = ").append(field_2_refPtg.toString()).append("\n");
   }
   if (field_4_ole_classname != null) {
     sb.append("    .unicodeFlag   = ").append(field_3_unicode_flag).append("\n");
     sb.append("    .oleClassname  = ").append(field_4_ole_classname).append("\n");
   }
   if (field_4_unknownByte != null) {
     sb.append("    .f4unknown   = ")
         .append(HexDump.byteToHex(field_4_unknownByte.intValue()))
         .append("\n");
   }
   if (field_5_stream_id != null) {
     sb.append("    .streamId      = ")
         .append(HexDump.intToHex(field_5_stream_id.intValue()))
         .append("\n");
   }
   if (field_6_unknown.length > 0) {
     sb.append("    .f7unknown     = ").append(HexDump.toHex(field_6_unknown)).append("\n");
   }
   sb.append("[/ftPictFmla]");
   return sb.toString();
 }
  public String toString() {
    StringBuffer sb = new StringBuffer();

    sb.append("[TXO]\n");
    sb.append("    .options        = ").append(HexDump.shortToHex(field_1_options)).append("\n");
    sb.append("         .isHorizontal = ").append(getHorizontalTextAlignment()).append('\n');
    sb.append("         .isVertical   = ").append(getVerticalTextAlignment()).append('\n');
    sb.append("         .textLocked   = ").append(isTextLocked()).append('\n');
    sb.append("    .textOrientation= ")
        .append(HexDump.shortToHex(getTextOrientation()))
        .append("\n");
    sb.append("    .reserved4      = ").append(HexDump.shortToHex(field_3_reserved4)).append("\n");
    sb.append("    .reserved5      = ").append(HexDump.shortToHex(field_4_reserved5)).append("\n");
    sb.append("    .reserved6      = ").append(HexDump.shortToHex(field_5_reserved6)).append("\n");
    sb.append("    .textLength     = ").append(HexDump.shortToHex(_text.length())).append("\n");
    sb.append("    .reserved7      = ").append(HexDump.intToHex(field_8_reserved7)).append("\n");

    sb.append("    .string = ").append(_text).append('\n');

    for (int i = 0; i < _text.numFormattingRuns(); i++) {
      sb.append("    .textrun = ").append(_text.getFontOfFormattingRun(i)).append('\n');
    }
    sb.append("[/TXO]\n");
    return sb.toString();
  }
    public String formatAsString() {

      StringBuilder sb = new StringBuilder(36);

      int PREFIX_LEN = "0x".length();
      sb.append(HexDump.intToHex(_d1), PREFIX_LEN, 8);
      sb.append("-");
      sb.append(HexDump.shortToHex(_d2), PREFIX_LEN, 4);
      sb.append("-");
      sb.append(HexDump.shortToHex(_d3), PREFIX_LEN, 4);
      sb.append("-");
      char[] d4Chars = HexDump.longToHex(getD4());
      sb.append(d4Chars, PREFIX_LEN, 4);
      sb.append("-");
      sb.append(d4Chars, PREFIX_LEN + 4, 12);
      return sb.toString();
    }
  public String toString() {
    StringBuffer buffer = new StringBuffer();

    buffer.append("[HYPERLINK RECORD]\n");
    buffer.append("    .range   = ").append(_range.formatAsString()).append("\n");
    buffer.append("    .guid    = ").append(_guid.formatAsString()).append("\n");
    buffer.append("    .linkOpts= ").append(HexDump.intToHex(_linkOpts)).append("\n");
    buffer.append("    .label   = ").append(getLabel()).append("\n");
    if ((_linkOpts & HLINK_TARGET_FRAME) != 0) {
      buffer.append("    .targetFrame= ").append(getTargetFrame()).append("\n");
    }
    if ((_linkOpts & HLINK_URL) != 0 && _moniker != null) {
      buffer.append("    .moniker   = ").append(_moniker.formatAsString()).append("\n");
    }
    if ((_linkOpts & HLINK_PLACE) != 0) {
      buffer.append("    .textMark= ").append(getTextMark()).append("\n");
    }
    buffer.append("    .address   = ").append(getAddress()).append("\n");
    buffer.append("[/HYPERLINK RECORD]\n");
    return buffer.toString();
  }
  @Override
  protected void appendValueText(StringBuilder sb) {
    sb.append("  .value	 = ");
    if (specialCachedValue == null) {
      sb.append(field_4_value).append("\n");
    } else {
      sb.append(specialCachedValue.formatDebugString()).append("\n");
    }
    sb.append("  .options   = ").append(HexDump.shortToHex(getOptions())).append("\n");
    sb.append("    .alwaysCalc= ").append(isAlwaysCalc()).append("\n");
    sb.append("    .calcOnLoad= ").append(isCalcOnLoad()).append("\n");
    sb.append("    .shared    = ").append(isSharedFormula()).append("\n");
    sb.append("  .zero      = ").append(HexDump.intToHex(field_6_zero)).append("\n");

    Ptg[] ptgs = field_8_parsed_expr.getTokens();
    for (int k = 0; k < ptgs.length; k++) {
      if (k > 0) {
        sb.append("\n");
      }
      sb.append("    Ptg[").append(k).append("]=");
      Ptg ptg = ptgs[k];
      sb.append(ptg.toString()).append(ptg.getRVAType());
    }
  }