private static void writeJavacRef()

in javac-ast-extension/src/org/jetbrains/jps/javac/ast/api/JavacFileData.java [178:203]


  private static void writeJavacRef(@NotNull DataOutput out, JavacRef ref) throws IOException {
    if (ref instanceof JavacRef.JavacClass) {
      out.writeByte(CLASS_MARKER);
      out.writeBoolean(((JavacRef.JavacClass)ref).isAnonymous());
    }
    else if (ref instanceof JavacRef.JavacField) {
      out.writeByte(FIELD_MARKER);
      final String containingClass = ((JavacRef.JavacField)ref).getContainingClass();
      out.writeUTF(containingClass == null? "" : containingClass);
      out.writeUTF(ref.getOwnerName());
      final String descriptor = ((JavacRef.JavacField)ref).getDescriptor();
      out.writeUTF(descriptor == null? "" : descriptor);
    }
    else if (ref instanceof JavacRef.JavacMethod) {
      out.writeByte(METHOD_MARKER);
      final String containingClass = ((JavacRef.JavacMethod)ref).getContainingClass();
      out.writeUTF(containingClass == null? "" : containingClass);
      out.writeUTF(ref.getOwnerName());
      out.write(((JavacRef.JavacMethod)ref).getParamCount());
    }
    else {
      throw new IllegalStateException("unknown type: " + ref.getClass());
    }
    writeModifiers(out, ref);
    out.writeUTF(ref.getName());
  }