@SuppressWarnings ( "unchecked" )
private <V> Macro<? super V> macro( final Class<? extends V> type ) {
int index = index( type );
if ( index < 0 ) {
throw new DIRuntimeException( "No macro for type:" + type.getCanonicalName() );
}
return (Macro<? super V>) macros[index];
}