in modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java [487:522]
private void prehandle(final FieldAccess access) {
// push owner.class literal
visitLdcInsn(access.owner);
push(access.name);
final Label next = new Label();
invokeVirtual(classType, new Method("getDeclaredField", fieldType, new Type[] { stringType }));
dup();
// store the field at localFieldArray[fieldCounter]:
loadLocal(localFieldArray);
swap();
loadLocal(fieldCounter);
swap();
arrayStore(fieldArrayType.getElementType());
dup();
invokeVirtual(fieldArrayType.getElementType(), Method.getMethod("boolean isAccessible()"));
final Label setAccessible = new Label();
// if false, setAccessible:
ifZCmp(EQ, setAccessible);
// else pop field instance
pop();
// and record that he was already accessible:
loadLocal(bitSet);
loadLocal(fieldCounter);
invokeVirtual(bitSetType, Method.getMethod("void set(int)"));
goTo(next);
mark(setAccessible);
push(true);
invokeVirtual(fieldArrayType.getElementType(), Method.getMethod("void setAccessible(boolean)"));
mark(next);
}