public Injector injector(Object who, String fieldName) {

		Preconditions.notNull(who);
		Preconditions.hasText(fieldName);

		Field field = null;
		boolean hasField = false;
		try {

			Method[] setters = setters(fieldName);
			if (setters.length == 1) {
				return Injectors.newSetterInjector(who, setters[0]);
			}

			field = field(fieldName);
			hasField = true;
			return Injectors.newSetterInjector(who, setter(field));
		} catch (Exception e) {
			try {

				if (hasField) {
					return Injectors.newFieldInjector(who, field);
				}

			} catch (Exception ee) {
				throw Lang.comboThrow(e, ee);
			}

			throw Lang.uncheck(e);
		}

	}