private Object getBean() {
		assertContext();
		if (wrappedBean == null) {
			if (beanName != null) {
				wrappedBean = appCtx.getBean(beanName, beanType);
			} else {
				Map<String, ?> beans = new HashMap<String, Object>(appCtx.getBeansOfType(beanType));
				String wrapperName = null;
				for (Map.Entry<String, ?> entry : beans.entrySet()) {
					if (entry.getValue() instanceof Lazy) {
						wrapperName = entry.getKey();
						break;
					}
				}
				beans.remove(wrapperName);
				if (beans.size() != 1) {
					throw new IllegalStateException("No unique bean of type " + beanType + ". Found: " + beans.keySet());
				} else {
					wrappedBean = beans.values().iterator().next();
				}
			}
		}
		return wrappedBean;
	}