public Field getField(Class<?> clazz, String name) {
		Field field = null;

		try {
			field = clazz.getField(name);
			if (!Modifier.isPublic(field.getModifiers()) && !field.isAccessible()) {
				field = null;
			}
		} catch (NoSuchFieldException e) {
			field = null;
		} catch (Exception e) {
			field = null;
		}

		return field;
	}
@Test
	public void testGetField() {
		Cat cat = new Cat();
		// Private from super
		assertNull(rEngine.getField(cat, "age"));

		// Inexistent
		assertNull(rEngine.getField(cat, "age1"));

		// Field shadowing
		assertEquals(rEngine.getField(cat, "age2").getType(), int.class);
		assertEquals(rEngine.getField(Cat.class, "age2").getType(), int.class);
		assertEquals(rEngine.getField("p1.Cat", "age2").getType(), int.class);

		// Static field
		assertEquals(rEngine.getField(cat, "CONSTANT").getType(), String.class);

		// Package
		assertNull(rEngine.getField(cat, "age4"));

		// Protected
		assertNull(rEngine.getField(cat, "age5"));
	}