Buggy code:
public class DesktopAssetManager implements AssetManager { private static final Logger logger = Logger . getLogger ( AssetManager . class . getName ( ) ) ; private ShaderGenerator shaderGenerator ; private final ImplHandler handler = new ImplHandler ( this ) ; private CopyOnWriteArrayList < AssetEventListener > eventListeners = new CopyOnWriteArrayList < AssetEventListener > ( ) ; private List < ClassLoader > classLoaders = Collections . synchronizedList ( new ArrayList < ClassLoader > ( ) ) ; public DesktopAssetManager ( ) { } public DesktopAssetManager ( boolean usePlatformConfig ) { } public DesktopAssetManager ( URL configFile ) { } private void loadConfigFile ( URL configFile ) { } public void addClassLoader ( ClassLoader loader ) { } public void removeClassLoader ( ClassLoader loader ) { } public List < ClassLoader > getClassLoaders ( ) { } public void addAssetEventListener ( AssetEventListener listener ) { } public void removeAssetEventListener ( AssetEventListener listener ) { } public void clearAssetEventListeners ( ) { } public void setAssetEventListener ( AssetEventListener listener ) { } public void registerLoader ( Class < ? extends AssetLoader > loader , String ... extensions ) { } public void registerLoader ( String clsName , String ... extensions ) { } public void unregisterLoader ( Class < ? extends AssetLoader > loaderClass ) { } public void registerLocator ( String rootPath , Class < ? extends AssetLocator > locatorClass ) { } public void registerLocator ( String rootPath , String clsName ) { } public void unregisterLocator ( String rootPath , Class < ? extends AssetLocator > clazz ) { } public AssetInfo locateAsset ( AssetKey < ? > key ) { } @ Override public < T > T getFromCache ( AssetKey < T > key ) { } @ Override public < T > void addToCache ( AssetKey < T > key , T asset ) { } @ Override public < T > boolean deleteFromCache ( AssetKey < T > key ) { } @ Override public void clearCache ( ) { } protected < T > T loadLocatedAsset ( AssetKey < T > key , AssetInfo info , AssetProcessor proc , AssetCache cache ) { } protected < T > T registerAndCloneSmartAsset ( AssetKey < T > key , T obj , AssetProcessor proc , AssetCache cache ) { } @ Override public < T > T loadAssetFromStream ( AssetKey < T > key , InputStream inputStream ) { } @ Override public < T > T loadAsset ( AssetKey < T > key ) { } public Object loadAsset ( String name ) { } public Texture loadTexture ( TextureKey key ) { } public Material loadMaterial ( String name ) { } public Texture loadTexture ( String name ) { } public AudioData loadAudio ( AudioKey key ) { } public AudioData loadAudio ( String name ) { } public BitmapFont loadFont ( String name ) { } public Spatial loadModel ( ModelKey key ) { } public Spatial loadModel ( String name ) { } public FilterPostProcessor loadFilter ( FilterKey key ) { } public FilterPostProcessor loadFilter ( String name ) { } public Shader loadShader ( ShaderKey key ) { } @ Override public ShaderGenerator getShaderGenerator ( EnumSet < Caps > caps ) { if ( ( shaderGenerator ) == null ) { <START_BUG> if ( ( caps . contains ( GLSL150 ) ) && ( caps . contains ( TextureMultisample ) ) ) { <END_BUG> shaderGenerator = new Glsl150ShaderGenerator ( this ) ; } else { shaderGenerator = new Glsl100ShaderGenerator ( this ) ; } } return shaderGenerator ; } @ Override public void setShaderGenerator ( ShaderGenerator shaderGenerator ) { } }

Fix:
if ( caps . contains ( GLSL150 ) ) {