@Override
public boolean visit(SimpleName node) {
IBinding b = node.resolveBinding();
if (b instanceof IVariableBinding) {
IVariableBinding vb = (IVariableBinding) b;
softDep(vb.getType());
boolean qualified = false;
if (needsQualification(node, vb.getDeclaringClass())) {
qualify(vb.getDeclaringClass().getErasure(),
TransformUtil.isStatic(vb));
qualified = true;
}
boolean hidden = !qualified && unqualified(node)
&& hidden(scope(node), vb);
if (node.getParent() instanceof SuperFieldAccess) {
print("super::");
} else if (hidden) {
print(CName.relative(vb.getDeclaringClass(), type, true) + "::");
}
if (typeInfo.isClosure(vb)) {
// Closures need a name resolved differently, to avoid method/
// variable name conflicts which are allowed in Java but not