code: private static Field asAccessibleField(Field field, Object target, boolean makeAccessibleCopy)
  			throws IllegalAccessException {
  		if (isDeleted(field)) {
  			throw Exceptions.noSuchFieldError(field);
  		}
  		Class<?> clazz = field.getDeclaringClass();
  		int mods = field.getModifiers();
  		if (field.isAccessible() || Modifier.isPublic(mods & jlClassGetModifiers(clazz))) {
  			//More expensive check not required / copy not required
  		}
  		else {
  			//More expensive check required
  			Class<?> callerClass = getCallerClass();
  			JVM.ensureMemberAccess(callerClass, clazz, target, mods);
  			if (makeAccessibleCopy) {
  				//TODO: This code is not covered by a test. It needs a non-reloadable type with non-public
  				//  field, being accessed reflectively from a context that is "priviliged" to access it without setting the access flag.
  
  				field = JVM.copyField(field); // copy: we must not change accessible flag on original method!
  				field.setAccessible(true);
  			}
  		}
  		return makeAccessibleCopy ? field : null;
  	}
docs: Performs access checks and returns a (potential) copy of the field with accessibility flag set if this necessary
  for the acces operation to succeed.
  <p>
  If any checks fail, an appropriate exception is raised.
  
  Warning this method is sensitive to stack depth! Should expects to be called DIRECTLY from a jlr redicriction
  method only!