src/core/se/jbee/inject/bootstrap/Macros.java
public <T> Macros with(Class<T> type, Macro<? extends T> macro) {
		int index = index(type);
		if (index >= 0) {
			Macro<?>[] tmp = macros.clone();
			tmp[index] = macro;
			return new Macros(types, tmp);
		}
		return new Macros(arrayPrepand(type, types),
				arrayPrepand(macro, macros));
	}
public <T> Macros with(Class<T> type, Macro<? extends T> macro) {
		int index = index(type);
		if (index >= 0) {
			Macro<?>[] tmp = macros.clone();
			tmp[index] = macro;
			return new Macros(types, tmp);
		}
		return new Macros(arrayPrepand(type, types),
				arrayPrepand(macro, macros));
	}
Uses the given {@link Macro} for the given exact (no super-types!) type
of values.

@param type The type of value that should be passed to the {@link Macro}
as value
@param macro The {@link Macro} expanding the type of value
@return A set of {@link Macros} containing the given one