1diff --git a/src/main/java/org/mockito/internal/util/reflection/AccessibilityChanger.java b/src/main/java/org/mockito/internal/util/reflection/AccessibilityChanger.java 2new file mode 100644 3index 0000000..9d1b756 4--- /dev/null 5+++ b/src/main/java/org/mockito/internal/util/reflection/AccessibilityChanger.java 6@@ -0,0 +1,32 @@ 7+/* 8+ * Copyright (c) 2007 Mockito contributors 9+ * This program is made available under the terms of the MIT License. 10+ */ 11+package org.mockito.internal.util.reflection; 12+ 13+import java.lang.reflect.AccessibleObject; 14+ 15+class AccessibilityChanger { 16+ 17+ private Boolean wasAccessible = null; 18+ 19+ /** 20+ * safely disables access 21+ */ 22+ public void safelyDisableAccess(AccessibleObject accessibleObject) { 23+ assert wasAccessible != null : "accessibility info shall not be null"; 24+ try { 25+ accessibleObject.setAccessible(wasAccessible); 26+ } catch (Throwable t) { 27+ //ignore 28+ } 29+ } 30+ 31+ /** 32+ * changes the accessibleObject accessibility and returns true if accessibility was changed 33+ */ 34+ public void enableAccess(AccessibleObject accessibleObject) { 35+ wasAccessible = accessibleObject.isAccessible(); 36+ accessibleObject.setAccessible(true); 37+ } 38+} 39diff --git a/src/main/java/org/mockito/internal/util/reflection/FieldSetter.java b/src/main/java/org/mockito/internal/util/reflection/FieldSetter.java 40new file mode 100644 41index 0000000..35b1210 42--- /dev/null 43+++ b/src/main/java/org/mockito/internal/util/reflection/FieldSetter.java 44@@ -0,0 +1,30 @@ 45+/* 46+ * Copyright (c) 2007 Mockito contributors 47+ * This program is made available under the terms of the MIT License. 48+ */ 49+package org.mockito.internal.util.reflection; 50+ 51+import java.lang.reflect.Field; 52+ 53+/** Do not use. To be removed after last usage is gone. */ 54+@Deprecated 55+public class FieldSetter { 56+ 57+ private FieldSetter(){} 58+ 59+ /** Do not use. To be removed after last usage is gone. */ 60+ @Deprecated 61+ public static void setField(Object target, Field field,Object value) { 62+ AccessibilityChanger changer = new AccessibilityChanger(); 63+ changer.enableAccess(field); 64+ try { 65+ field.set(target, value); 66+ } catch (IllegalAccessException e) { 67+ throw new RuntimeException("Access not authorized on field '" + field + "' of object '" + target + "' with value: '" + value + "'", e); 68+ } catch (IllegalArgumentException e) { 69+ throw new RuntimeException("Wrong argument on field '" + field + "' of object '" + target + "' with value: '" + value + "', \n" + 70+ "reason : " + e.getMessage(), e); 71+ } 72+ changer.safelyDisableAccess(field); 73+ } 74+} 75