}
// @Override
public void endVisit(JProgram x, Context ctx) {
// visit special things that may have been culled
JField field = x.getSpecialField("Object.typeId");
names.put(field, objectScope.declareName(mangleName(field),
field.getName()));
field = x.getSpecialField("Object.typeName");
names.put(field, objectScope.declareName(mangleName(field),
field.getName()));
field = x.getSpecialField("Cast.typeIdArray");
names.put(field, topScope.declareName(mangleName(field), field.getName()));
/*
* put the null method and field into objectScope since they can be
* referenced as instance on null-types (as determined by type flow)
*/
JMethod nullMethod = x.getNullMethod();
polymorphicNames.put(nullMethod,
objectScope.declareName(nullMethod.getName()));
JField nullField = x.getNullField();
JsName nullFieldName = objectScope.declareName(nullField.getName());
polymorphicNames.put(nullField, nullFieldName);
names.put(nullField, nullFieldName);
/*
* put nullMethod in the global scope, too; it's the replacer for clinits