package com.intellij.flex.uiDesigner.mxml; import com.intellij.flex.uiDesigner.InvalidPropertyException; import com.intellij.flex.uiDesigner.io.PrimitiveAmfOutputStream; import com.intellij.lang.javascript.psi.JSVariable; public class VariableReference implements ValueReference { private int reference = 0; private final JSVariable variable; public VariableReference(JSVariable variable) { this.variable = variable; } @Override public void write(PrimitiveAmfOutputStream out, BaseWriter writer, ValueReferenceResolver valueReferenceResolver) throws InvalidPropertyException { if (reference == 0) { out.writeUInt29(0); } else if (reference == -1) { reference = writer.allocateAbsoluteStaticObjectId() + 1; out.writeUInt29(reference << 1); } else { out.writeUInt29(reference << 1 | 1); return; } ExpressionBinding.writeJSVariable(variable, out, writer, valueReferenceResolver); } public void markAsMultipleReferred() { reference = -1; } }