@Override
  public void serializeMe(UsageInfo info, StringBuilder os) throws IOException {
    //final SmartPsiElementPointer<?> pointer = info.getSmartPointer();
    final GenericElementSignatureProvider provider = new GenericElementSignatureProvider();
    PsiElement element = info.getElement();
    VirtualFile virtualFile = info.getVirtualFile();
    if (element == null || virtualFile == null) throw new IOException(info + " is invalid");
    final String signature = provider.getSignature(element);
    append(os, virtualFile.getPath());
    os.append(separator);
    append(os, StringUtil.notNullize(signature));
    os.append(separator);
    final ProperTextRange rangeInElement = info.getRangeInElement();
    if (rangeInElement == null) {
      append(os, "-1");
      os.append(separator);
      append(os, "-1");
    }
    else {
      append(os, String.valueOf(rangeInElement.getStartOffset()));
      os.append(separator);
      append(os, String.valueOf(rangeInElement.getEndOffset()));
    }
    os.append(separator);
    append(os, String.valueOf(info.isNonCodeUsage()));
    os.append(separator);
    append(os, String.valueOf(info.isDynamicUsage()));
    os.append(separator);
    final String text = new UsageInfo2UsageAdapter(info).getPlainText();
    append(os, text);
    os.append(separator);
  }
@Override
  public void serializeMe(UsageInfo info, StringBuilder os)