Buggy code:
public class CurrencyField extends FieldType implements ResourceLoaderAware , SchemaAware { protected static final String PARAM_DEFAULT_CURRENCY = "defaultCurrency" ; protected static final String PARAM_RATE_PROVIDER_CLASS = "providerClass" ; protected static final Object PARAM_PRECISION_STEP = "precisionStep" ; protected static final String DEFAULT_RATE_PROVIDER_CLASS = "solr.FileExchangeRateProvider" ; protected static final String DEFAULT_DEFAULT_CURRENCY = "USD" ; protected static final String DEFAULT_PRECISION_STEP = "0" ; protected static final String FIELD_SUFFIX_AMOUNT_RAW = "_amount_raw" ; protected static final String FIELD_SUFFIX_CURRENCY = "_currency" ; private IndexSchema schema ; protected FieldType fieldTypeCurrency ; protected FieldType fieldTypeAmountRaw ; private String exchangeRateProviderClass ; private String defaultCurrency ; private ExchangeRateProvider provider ; public static Logger log = LoggerFactory . getLogger ( CurrencyField . class ) ; public static Currency getCurrency ( final String code ) { } @ Override protected void init ( IndexSchema schema , Map < String , String > args ) { super . init ( schema , args ) ; if ( this . isMultiValued ( ) ) { throw new SolrException ( ErrorCode . SERVER_ERROR , ( "CurrencyField<seq2seq4repair_space>types<seq2seq4repair_space>can<seq2seq4repair_space>not<seq2seq4repair_space>be<seq2seq4repair_space>multiValued:<seq2seq4repair_space>" + ( this . typeName ) ) ) ; } this . schema = schema ; this . exchangeRateProviderClass = args . get ( CurrencyField . PARAM_RATE_PROVIDER_CLASS ) ; this . defaultCurrency = args . get ( CurrencyField . PARAM_DEFAULT_CURRENCY ) ; if ( ( this . defaultCurrency ) == null ) { this . defaultCurrency = CurrencyField . DEFAULT_DEFAULT_CURRENCY ; } if ( ( this . exchangeRateProviderClass ) == null ) { this . exchangeRateProviderClass = CurrencyField . DEFAULT_RATE_PROVIDER_CLASS ; } if ( null == ( CurrencyField . getCurrency ( this . defaultCurrency ) ) ) { throw new SolrException ( ErrorCode . BAD_REQUEST , ( "Default<seq2seq4repair_space>currency<seq2seq4repair_space>code<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>supported<seq2seq4repair_space>by<seq2seq4repair_space>this<seq2seq4repair_space>JVM:<seq2seq4repair_space>" + ( this . defaultCurrency ) ) ) ; } String precisionStepString = args . get ( CurrencyField . PARAM_PRECISION_STEP ) ; if ( precisionStepString == null ) { precisionStepString = CurrencyField . DEFAULT_PRECISION_STEP ; } fieldTypeAmountRaw = new TrieLongField ( ) ; fieldTypeAmountRaw . setTypeName ( "amount_raw_type_tlong" ) ; Map < String , String > map = new HashMap < String , String > ( 1 ) ; map . put ( "precisionStep" , precisionStepString ) ; fieldTypeAmountRaw . init ( schema , map ) ; fieldTypeCurrency = new StrField ( ) ; fieldTypeCurrency . setTypeName ( "currency_type_string" ) ; fieldTypeCurrency . init ( schema , new HashMap < String , String > ( ) ) ; args . remove ( CurrencyField . PARAM_RATE_PROVIDER_CLASS ) ; args . remove ( CurrencyField . PARAM_DEFAULT_CURRENCY ) ; args . remove ( CurrencyField . PARAM_PRECISION_STEP ) ; try { Class < ? extends ExchangeRateProvider > c = schema . getResourceLoader ( ) . findClass ( exchangeRateProviderClass , ExchangeRateProvider . class ) ; provider = c . newInstance ( ) ; provider . init ( args ) ; } catch ( Exception e ) { <START_BUG> throw new SolrException ( ErrorCode . BAD_REQUEST , ( ( ( "Error<seq2seq4repair_space>instantiating<seq2seq4repair_space>exhange<seq2seq4repair_space>rate<seq2seq4repair_space>provider<seq2seq4repair_space>" + ( exchangeRateProviderClass ) ) + ":<seq2seq4repair_space>" ) + ( e . getMessage ( ) ) ) , e ) ; <END_BUG> } } @ Override public boolean isPolyField ( ) { } @ Override public void checkSchemaField ( final SchemaField field ) throws SolrException { } @ Override public List < IndexableField > createFields ( SchemaField field , Object externalVal , float boost ) { } private SchemaField getAmountField ( SchemaField field ) { } private SchemaField getCurrencyField ( SchemaField field ) { } private void createDynamicCurrencyField ( String suffix , FieldType type ) { } @ Override public void inform ( IndexSchema schema ) { } @ Override public void inform ( ResourceLoader resourceLoader ) { } @ Override public Query getFieldQuery ( QParser parser , SchemaField field , String externalVal ) { } public CurrencyField . RawCurrencyValueSource getValueSource ( SchemaField field , QParser parser ) { } public ValueSource getConvertedValueSource ( String targetCurrencyCode , CurrencyField . RawCurrencyValueSource source ) { } @ Override public Query getRangeQuery ( QParser parser , SchemaField field , String part1 , String part2 , final boolean minInclusive , final boolean maxInclusive ) { } public Query getRangeQuery ( QParser parser , SchemaField field , final CurrencyValue p1 , final CurrencyValue p2 , final boolean minInclusive , final boolean maxInclusive ) { } @ Override public SortField getSortField ( SchemaField field , boolean reverse ) { } public void write ( XMLWriter xmlWriter , String name , IndexableField field ) throws IOException { } @ Override public void write ( TextResponseWriter writer , String name , IndexableField field ) throws IOException { } public ExchangeRateProvider getProvider ( ) { } class ConvertedCurrencyValueSource extends ValueSource { private final Currency targetCurrency ; private final CurrencyField . RawCurrencyValueSource source ; private final double rate ; public ConvertedCurrencyValueSource ( String targetCurrencyCode , CurrencyField . RawCurrencyValueSource source ) { } @ Override public FunctionValues getValues ( Map context , AtomicReaderContext reader ) throws IOException { } public String name ( ) { } @ Override public String description ( ) { } @ Override public boolean equals ( Object o ) { } @ Override public int hashCode ( ) { } } class RawCurrencyValueSource extends ValueSource { private static final long serialVersionUID = 1L ; private final Currency targetCurrency ; private ValueSource currencyValues ; private ValueSource amountValues ; private final SchemaField sf ; public RawCurrencyValueSource ( SchemaField sfield , String targetCurrencyCode , QParser parser ) { } public SchemaField getField ( ) { } public Currency getTargetCurrency ( ) { } @ Override public FunctionValues getValues ( Map context , AtomicReaderContext reader ) throws IOException { } public String name ( ) { } @ Override public String description ( ) { } @ Override public boolean equals ( Object o ) { } @ Override public int hashCode ( ) { } } }

Fix:
throw new SolrException ( ErrorCode . BAD_REQUEST , ( ( ( "Error<seq2seq4repair_space>instantiating<seq2seq4repair_space>exchange<seq2seq4repair_space>rate<seq2seq4repair_space>provider<seq2seq4repair_space>" + ( exchangeRateProviderClass ) ) + ":<seq2seq4repair_space>" ) + ( e . getMessage ( ) ) ) , e ) ;