code: public static Context discover(Object context, Class<?>... subset) {
  		
  		Set<Class<?>> contextSubset = (subset == null || subset.length == 0)? 
  			contexts.keySet() :new HashSet<Class<?>>(Arrays.asList(subset));
  		
  		Set<Class<?>> contextClasses = contexts.keySet();
  		
  		for (Class<?> contextClass : contextClasses) {
  			
  			if(!contextSubset.contains(contextClass)) continue;
  			
  			if(contextClass.isAssignableFrom(context.getClass())) {
  				
  				return contexts.get(contextClass).resolve(context);
  			}
  		}
  		
  		throw new ContextNotFoundException(context.getClass());
  	}
docs: <p>Takes the generic {@link Object} of a context and discovers
  the actual {@link Context} instance. It takes an additional set
  of {@link Class} and limits context discovery to those.
  
  @param context
  the {@link Object} whose {@link Context} instance is
  to be discovered
  <br><br>
  @param subset
  the {@link Class}es which are to be considered for this
  context discovery. If this array is {@code null} or empty
  all entries in {@link #contexts} are considered applicable
  <br><br>
  @return the {@link Context} instance of the given {@link Object}
  <br><br>
  @throws ContextNotFoundException
  if the {@link Context} cannot be resolved from the given object
  <br><br>
  @since 1.0.0