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());
}