get available plugins . this and couple of following methods are declared as synchronized because 1 plugins can be reloaded at anytime 2 requests are pretty asynchronous so this tries to ensure that there will be no concurrentmodificationexception or other similar exceptions . concode_field_sep AuthorizationPluginClassLoader loader concode_elem_sep List<IAuthorizationPlugin> plugins concode_elem_sep AuthorizationFramework instance concode_elem_sep File directory concode_elem_sep Logger LOGGER concode_field_sep void handleLoadClass concode_elem_sep boolean isAllowed concode_elem_sep boolean isAllowed concode_elem_sep boolean checkAll concode_elem_sep void removePlugin concode_elem_sep List<File> listFilesClassesRec concode_elem_sep void addPlugin concode_elem_sep void removeAll concode_elem_sep void reload concode_elem_sep void loadClass concode_elem_sep List<File> listFilesRec concode_elem_sep AuthorizationFramework getInstance concode_elem_sep String getClassName concode_elem_sep String getClassName concode_elem_sep List<File> listFiles
List < IAuthorizationPlugin > function ( ) { List < IAuthorizationPlugin > loc0 ; synchronized ( this ) { loc0 = new ArrayList < > ( plugins ) ; } return loc0 ; }