Buggy code:
@ Override public synchronized TimerService getValue ( ) throws IllegalArgumentException , IllegalStateException { } @ Override public javax . ejb . Timer createCalendarTimer ( ScheduleExpression schedule ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createCalendarTimer ( ScheduleExpression schedule , TimerConfig timerConfig ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createIntervalTimer ( Date initialExpiration , long intervalDuration , TimerConfig timerConfig ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createIntervalTimer ( long initialDuration , long intervalDuration , TimerConfig timerConfig ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createSingleActionTimer ( Date expiration , TimerConfig timerConfig ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createSingleActionTimer ( long duration , TimerConfig timerConfig ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createTimer ( long duration , Serializable info ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createTimer ( Date expiration , Serializable info ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createTimer ( long initialDuration , long intervalDuration , Serializable info ) throws IllegalArgumentException , IllegalStateException , EJBException { } @ Override public javax . ejb . Timer createTimer ( Date initialExpiration , long intervalDuration , Serializable info ) throws IllegalArgumentException , IllegalStateException , EJBException { } public TimerImpl loadAutoTimer ( ScheduleExpression schedule , TimerConfig timerConfig , Method timeoutMethod ) { } @ Override public Collection < javax . ejb . Timer > getTimers ( ) throws IllegalStateException , EJBException { } @ Override public Collection < javax . ejb . Timer > getAllTimers ( ) throws IllegalStateException , EJBException { } private javax . ejb . Timer createTimer ( Date initialExpiration , long intervalDuration , Serializable info , boolean persistent ) { } private Object currentPrimaryKey ( ) { } private TimerImpl createCalendarTimer ( ScheduleExpression schedule , Serializable info , boolean persistent , Method timeoutMethod ) { } public TimerImpl getTimer ( final String timerId ) { } public TimedObjectInvoker getInvoker ( ) { } public TimerImpl getTimer ( TimerHandle handle ) { } protected Transaction getTransaction ( ) { } public void persistTimer ( final TimerImpl timer , boolean newTimer ) { } public void cancelTimer ( final TimerImpl timer ) { } public void expireTimer ( final TimerImpl timer ) { } public void suspendTimers ( ) { } public void restoreTimers ( final List < ScheduleTimer > autoTimers ) { } protected void startTimer ( TimerImpl timer ) { } private void registerSynchronization ( Synchronization synchronization ) { } boolean transactionActive ( ) { } private boolean isBeforeCompletion ( ) { } protected boolean isLifecycleCallbackInvocation ( ) { } protected void scheduleTimeout ( TimerImpl timer , boolean newTimer ) { } protected void cancelTimeout ( final TimerImpl timer ) { } public void invokeTimeout ( final TimerImpl timer ) { } public boolean isScheduled ( final String tid ) { } private Map < String , TimerImpl > getWaitingOnTxCompletionTimers ( ) { } private void addWaitingOnTxCompletionTimer ( final TimerImpl timer ) { } private boolean isSingletonBeanInvocation ( ) { } private List < TimerImpl > getActivePersistentTimers ( ) { } private boolean doesTimeoutMethodMatch ( final Method timeoutMethod , final String timeoutMethodName , final String [ ] methodParams ) { } private boolean doesScheduleMatch ( final ScheduleExpression expression1 , final ScheduleExpression expression2 ) { } private boolean same ( Object i1 , Object i2 ) { } private boolean methodParamsMatch ( Class < ? > [ ] methodParams , String [ ] otherMethodParams ) { } private void setRollbackOnly ( ) { } private void startNewTx ( ) { } private void assertTimerServiceState ( ) { } public InjectedValue < EJBComponent > getEjbComponentInjectedValue ( ) { } public InjectedValue < ExecutorService > getExecutorServiceInjectedValue ( ) { } public InjectedValue < Timer > getTimerInjectedValue ( ) { } public InjectedValue < TimerPersistence > getTimerPersistence ( ) { } public ServiceName getServiceName ( ) { } public boolean isStarted ( ) { } public InjectedValue < TimedObjectInvoker > getTimedObjectInvoker ( ) { } public TimerServiceResource getResource ( ) { } private void registerTimerResource ( final String timerId ) { } private void unregisterTimerResource ( final String timerId ) { } public boolean shouldRun ( TimerImpl timer ) { <START_BUG> return ( ! ( timer . isPersistent ( ) ) ) || ( timerPersistence . getValue ( ) . shouldRun ( timer ) ) ; <END_BUG> } private class TimerCreationTransactionSynchronization implements Synchronization { private final TimerImpl timer ; public TimerCreationTransactionSynchronization ( TimerImpl timer ) { } @ Override public void beforeCompletion ( ) { } @ Override public void afterCompletion ( int status ) { } } private class TimerRemoveSynchronization implements Synchronization { private final TimerImpl timer ; private TimerRemoveSynchronization ( final TimerImpl timer ) { } @ Override public void beforeCompletion ( ) { } @ Override public void afterCompletion ( final int status ) { } } private class Task extends TimerTask { private final org . jboss . as . ejb3 . timerservice . task . TimerTask < ? > delegate ; private final ControlPoint controlPoint ; private volatile boolean queued = false ; public Task ( final org . jboss . as . ejb3 . timerservice . task . TimerTask < ? > delegate , ControlPoint controlPoint ) { } @ Override public void run ( ) { } @ Override public boolean cancel ( ) { } } private final class TimerRefreshListener implements TimerPersistence . TimerChangeListener { @ Override public void timerAdded ( TimerImpl timer ) { } @ Override public void timerRemoved ( String timerId ) { } @ Override public TimerServiceImpl getTimerService ( ) { } } }

Fix:
return ( ! ( timer . isPersistent ( ) ) ) || ( timerPersistence . getValue ( ) . shouldRun ( timer , this . transactionManager ) ) ;