/** 
 * Testing singleton creation and clean instance  
 *  
 */ 
import  java.util.* ; 
import  java.lang.* ; 
import  java.io.* ; 
 
/* Name of the class has to be "Main" only if the class is public. */ 
class  Ideone
{ 
	{ 
		ASingletonClass a =  ASingletonClass.getInstance ( ) ; 
		System .
out .
println ( "Instance reference of a: " + a
) ;  		ASingletonClass b =  ASingletonClass.getInstance ( ) ; 
		System .
out .
println ( "Instance reference of b: " + b
+ " which is equal to a" ) ;  		b.clear ( ) ; 
		System .
out .
println ( "Instances are still same" ) ;  		System .
out .
println ( "Instance reference of a: " + a
) ;  		System .
out .
println ( "Instance reference of b: " + b
+ " which is equal to a" ) ;   
		System .
out .
println ( "After getting instances again, the references changed:" ) ;  		a =  ASingletonClass.getInstance ( ) ; 
		System .
out .
println ( "Instance reference of a: " + a
) ;  		b =  ASingletonClass.getInstance ( ) ; 
		System .
out .
println ( "Instance reference of b: " + b
+ " which is equal to a" ) ;   
	} 
} 
 
class  ASingletonClass
{  
    private  static  ASingletonClass instance =  null ;  
 
    private  ASingletonClass( )  { }  
 
    public  static  ASingletonClass getInstance( )  
    {  
        if  ( instance ==  null )  
            instance =  new  ASingletonClass( ) ;  
        return  instance;  
    }  
    public  static  void  clear( ) 
	{ 
		instance =  null ; 
	} 
} 
 
				LyoqCiAqIFRlc3Rpbmcgc2luZ2xldG9uIGNyZWF0aW9uIGFuZCBjbGVhbiBpbnN0YW5jZSAKICogCiAqLwppbXBvcnQgamF2YS51dGlsLio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJQVNpbmdsZXRvbkNsYXNzIGEgPSBBU2luZ2xldG9uQ2xhc3MuZ2V0SW5zdGFuY2UoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlIHJlZmVyZW5jZSBvZiBhOiAiK2EpOwoJCUFTaW5nbGV0b25DbGFzcyBiID0gQVNpbmdsZXRvbkNsYXNzLmdldEluc3RhbmNlKCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJJbnN0YW5jZSByZWZlcmVuY2Ugb2YgYjogIitiKyIgd2hpY2ggaXMgZXF1YWwgdG8gYSIpOwoJCWIuY2xlYXIoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlcyBhcmUgc3RpbGwgc2FtZSIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiSW5zdGFuY2UgcmVmZXJlbmNlIG9mIGE6ICIrYSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJJbnN0YW5jZSByZWZlcmVuY2Ugb2YgYjogIitiKyIgd2hpY2ggaXMgZXF1YWwgdG8gYSIpOwoKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFmdGVyIGdldHRpbmcgaW5zdGFuY2VzIGFnYWluLCB0aGUgcmVmZXJlbmNlcyBjaGFuZ2VkOiIpOwoJCWEgPSBBU2luZ2xldG9uQ2xhc3MuZ2V0SW5zdGFuY2UoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlIHJlZmVyZW5jZSBvZiBhOiAiK2EpOwoJCWIgPSBBU2luZ2xldG9uQ2xhc3MuZ2V0SW5zdGFuY2UoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlIHJlZmVyZW5jZSBvZiBiOiAiK2IrIiB3aGljaCBpcyBlcXVhbCB0byBhIik7CgoJfQp9CgpjbGFzcyBBU2luZ2xldG9uQ2xhc3MKeyAKICAgIHByaXZhdGUgc3RhdGljIEFTaW5nbGV0b25DbGFzcyBpbnN0YW5jZSA9IG51bGw7IAogIAogICAgcHJpdmF0ZSBBU2luZ2xldG9uQ2xhc3MoKSB7fSAKICAKICAgIHB1YmxpYyBzdGF0aWMgQVNpbmdsZXRvbkNsYXNzIGdldEluc3RhbmNlKCkgCiAgICB7IAogICAgICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKSAKICAgICAgICAgICAgaW5zdGFuY2UgPSBuZXcgQVNpbmdsZXRvbkNsYXNzKCk7IAogICAgICAgIHJldHVybiBpbnN0YW5jZTsgCiAgICB9IAogICAgcHVibGljIHN0YXRpYyB2b2lkIGNsZWFyKCkKCXsKCQlpbnN0YW5jZSA9IG51bGw7Cgl9Cn0=