@Override public Variable emitMove(Value input) { assert !(input instanceof Variable) : "Creating a copy of a variable via this method is not supported (and potentially a bug): " + input; Variable result = newVariable(input.getValueKind()); emitMove(result, input); return result; } So how am I supposed to copy a variable? Thanks, Andrew.