docs: @SuppressWarnings("unchecked")
  	public <T> T component(Class<T> component) {
  		logger.debug("Component is requested with type: Type [" + component + "]");
  		Preconditions.checkArgument(component != null, 
  				"Parameter 'component' must not be [" + component + "]");
  		List<Descriptor<?>> descriptors = new ArrayList<>();
  		Class<?> deployment = deployment();
  		
  		for (Descriptor<?> descriptor : components.get(component)) {
  			Set<Class<? extends Annotation>> deployments = descriptor.deployments();
  			
  			if (deployments.isEmpty() || deployment == null
  					|| (deployment != null && deployments.contains(deployment))) {
  				descriptors.add(descriptor);
  			}
  		}
  		
  		if (descriptors.isEmpty()) {
  			logger.warn("No component returned: Current deployment ["
  					+ ((deployment == null) ? deployment : deployment.getSimpleName())
  					+ "]; Component type [" + component 
  					+ "]; You must install an appropriate component on ahead "
  					+ "invoking [public <T> void install(Class<T> component)]");
  			return null;
  		} else if (descriptors.size() > 1) {
  			logger.warn("Component is duplicated: Provider type [" + component
  					+ "]; You must specify more concrete type");
  			return null;
  		}
  		
  		return instance(component(descriptors.get(0)), new Target(Target.Kind.LOCAL_VARIABLE, component, Collections.EMPTY_SET));
  	}