Buggy code:
public class ShapefileDataStoreFactory implements FileDataStoreFactorySpi { static final Logger LOGGER = Logging . getLogger ( "org.geotools.data.shapefile" ) ; public static final Param URLP = new Param ( "url" , URL . class , "url<seq2seq4repair_space>to<seq2seq4repair_space>a<seq2seq4repair_space>.shp<seq2seq4repair_space>file" , true , null , new org . geotools . util . KVP ( Param . EXT , "shp" ) ) ; public static final Param NAMESPACEP = new Param ( "namespace" , URI . class , "uri<seq2seq4repair_space>to<seq2seq4repair_space>a<seq2seq4repair_space>the<seq2seq4repair_space>namespace" , false , null , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) ; public static final Param MEMORY_MAPPED = new Param ( "memory<seq2seq4repair_space>mapped<seq2seq4repair_space>buffer" , Boolean . class , "enable//disable<seq2seq4repair_space>the<seq2seq4repair_space>use<seq2seq4repair_space>of<seq2seq4repair_space>memory-mapped<seq2seq4repair_space>io" , false , false , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) ; public static final Param CACHE_MEMORY_MAPS = new Param ( "cache<seq2seq4repair_space>and<seq2seq4repair_space>reuse<seq2seq4repair_space>memory<seq2seq4repair_space>maps" , Boolean . class , "only<seq2seq4repair_space>memory<seq2seq4repair_space>map<seq2seq4repair_space>a<seq2seq4repair_space>file<seq2seq4repair_space>one,<seq2seq4repair_space>then<seq2seq4repair_space>cache<seq2seq4repair_space>and<seq2seq4repair_space>reuse<seq2seq4repair_space>the<seq2seq4repair_space>map" , false , true , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) ; public static final Param FILE_TYPE = new Param ( "filetype" , String . class , "Discriminator<seq2seq4repair_space>for<seq2seq4repair_space>directory<seq2seq4repair_space>stores" , false , "shapefile" , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) ; public static final Param CREATE_SPATIAL_INDEX = new Param ( "create<seq2seq4repair_space>spatial<seq2seq4repair_space>index" , Boolean . class , "enable//disable<seq2seq4repair_space>the<seq2seq4repair_space>automatic<seq2seq4repair_space>creation<seq2seq4repair_space>of<seq2seq4repair_space>spatial<seq2seq4repair_space>index" , false , true , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) ; public static final Param DBFCHARSET = new Param ( "charset" , Charset . class , "character<seq2seq4repair_space>used<seq2seq4repair_space>to<seq2seq4repair_space>decode<seq2seq4repair_space>strings<seq2seq4repair_space>from<seq2seq4repair_space>the<seq2seq4repair_space>DBF<seq2seq4repair_space>file" , false , Charset . forName ( "ISO-8859-1" ) , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) { public Object parse ( String text ) throws IOException { } public String text ( Object value ) { } } ; public static final Param FSTYPE = new Param ( "fstype" , String . class , "Enable<seq2seq4repair_space>using<seq2seq4repair_space>a<seq2seq4repair_space>setting<seq2seq4repair_space>of<seq2seq4repair_space>'shape'." , false , "shape" , new org . geotools . util . KVP ( Param . LEVEL , "advanced" , Param . OPTIONS , Arrays . asList ( new String [ ] { "shape-ng" , "shape" , "index" } ) ) ) ; public static final Param DBFTIMEZONE = new Param ( "timezone" , TimeZone . class , "time<seq2seq4repair_space>zone<seq2seq4repair_space>used<seq2seq4repair_space>to<seq2seq4repair_space>read<seq2seq4repair_space>dates<seq2seq4repair_space>from<seq2seq4repair_space>the<seq2seq4repair_space>DBF<seq2seq4repair_space>file" , false , TimeZone . getDefault ( ) , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) { public Object parse ( String text ) throws IOException { } public String text ( Object value ) { } } ; public static final Param ENABLE_SPATIAL_INDEX = new Param ( "enable<seq2seq4repair_space>spatial<seq2seq4repair_space>index" , Boolean . class , "enable//disable<seq2seq4repair_space>the<seq2seq4repair_space>use<seq2seq4repair_space>of<seq2seq4repair_space>spatial<seq2seq4repair_space>index<seq2seq4repair_space>for<seq2seq4repair_space>local<seq2seq4repair_space>shapefiles" , false , true , new org . geotools . util . KVP ( Param . LEVEL , "advanced" ) ) ; public String getDisplayName ( ) { } public String getDescription ( ) { } public Param [ ] getParametersInfo ( ) { } public boolean isAvailable ( ) { } public Map < RenderingHints . Key , ? > getImplementationHints ( ) { } public DataStore createDataStore ( Map < String , Serializable > params ) throws IOException { } public DataStore createNewDataStore ( Map < String , Serializable > params ) throws IOException { } < T > T lookup ( Param param , Map < String , Serializable > params , Class < T > target ) throws IOException { } @ Override public boolean canProcess ( Map params ) { <START_BUG> if ( DataUtilities . canProcess ( params , getParametersInfo ( ) ) ) { <END_BUG> return false ; } try { URL url = ( ( URL ) ( ShapefileDataStoreFactory . URLP . lookUp ( params ) ) ) ; if ( canProcess ( url ) ) { return true ; } else { Object fileType = ShapefileDataStoreFactory . FILE_TYPE . lookUp ( params ) ; File dir = DataUtilities . urlToFile ( url ) ; return ( dir . isDirectory ( ) ) && ( ( fileType == null ) || ( "shapefile" . equals ( fileType ) ) ) ; } } catch ( IOException e ) { return false ; } } public boolean canProcess ( URL f ) { } public static class ShpFileStoreFactory implements FileStoreFactory { ShapefileDataStoreFactory shpFactory ; Map originalParams ; public ShpFileStoreFactory ( ShapefileDataStoreFactory factory , Map originalParams ) { } public DataStore getDataStore ( File file ) throws IOException { } } @ Override public String [ ] getFileExtensions ( ) { } @ Override public FileDataStore createDataStore ( URL url ) throws IOException { } @ Override public String getTypeName ( URL url ) throws IOException { } }

Fix:
if ( ! ( DataUtilities . canProcess ( params , getParametersInfo ( ) ) ) ) {