RealObjectFieldTracker { void scanNullRealObjectFields(Object object) { for (Field field : ReflectUtil.getAllDeclaredFields(object.getClass())) { if (!field.isAnnotationPresent(RealObject.class)) { continue; } if (!field.isAccessible()) { field.setAccessible(true); } try { if (field.get(object) != null) { continue; } } catch (IllegalAccessException e) { throw new RuntimeException(e); } trackField(field, object); } } RealObjectFieldTracker(
      RealObjectMapping realObjectMapping,
      RealObjectMaker realObjectMaker,
      DependencyProviderFactory dependencyProviderFacotry);   }
@Test public void testBasicScanning() { TestClass1 testObject = new TestClass1(); mRealObjectFieldTracker.scanNullRealObjectFields(testObject); verify(mRealObjectMapping).put(runnableKey, testRunnableKey.typeToken, true); verify(mRealObjectMapping).put(testRunnableKey, testRunnableKey.typeToken, true); verifyNoMoreInteractions(mRealObjectMapping); }