public void putField(Reference ref, Object obj, Object value)
			throws InterpreterException {
		Field f;
		try {
			Class clazz = TypeSignature.getClass(ref.getClazz());
			try {
				f = clazz.getField(ref.getName());
			} catch (NoSuchFieldException ex) {
				f = clazz.getDeclaredField(ref.getName());
			}
		} catch (ClassNotFoundException ex) {
			throw new InterpreterException(ref + ": Class not found");
		} catch (NoSuchFieldException ex) {
			throw new InterpreterException("Constructor " + ref + " not found");
		} catch (SecurityException ex) {
			throw new InterpreterException(ref + ": Security exception");
		}
		try {
			f.set(obj, toReflectType(ref.getType(), value));
		} catch (IllegalAccessException ex) {
			throw new InterpreterException("Field " + ref + " not accessible");
		}
	}