code: @ DSGenerator ( tool_name = "Doppelganger" , tool_version = "2.0" , generated_on = "2014-09-03 15:01:15.190 -0400" , hash_original_method = "F262A3A18BABECF7EC492736953EAF6E" , hash_generated_method = "94A4545C167C029CC38AACEACF2087E9" ) private void unparkSuccessor  ( Node node ) { int ws = node . waitStatus ; if ( ws < 0 ) compareAndSetWaitStatus ( node , ws , 0 ) ; Node s = node . next ; if ( s == null || s . waitStatus > 0 ) { s = null ; for ( Node t = tail ; t != null && t != node ; t = t . prev ) if ( t . waitStatus <= 0 ) s = t ; } if ( s != null ) LockSupport . unpark ( s . thread ) ; }