test_class.declarator: SERVICE_NAME = "test-service"
test_class.modifier: private static final
test_class.original_string: private static final String SERVICE_NAME = "test-service";
test_class.type: String
test_class.var_name: SERVICE_NAME
test_class.declarator: mFailureHandler
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private FailureHandler mFailureHandler;
test_class.type: FailureHandler
test_class.var_name: mFailureHandler
test_class.declarator: mMessage
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private Message mMessage;
test_class.type: Message
test_class.var_name: mMessage
test_class.declarator: mImpl = new Object()
test_class.modifier: private final
test_class.original_string: private final Object mImpl = new Object();
test_class.type: Object
test_class.var_name: mImpl
test_class.file: actors-library/src/test/java/com/truecaller/androidactors/ActorServiceTest.java
test_class.identifier: ActorServiceTest
test_case.body: @SuppressWarnings("unchecked")
      @Test
      public void deliver_deliverMessage_always() throws Exception {
          ActorService service = createService();
          IBinder binder = service.onBind(new Intent());
          ActorService.RemoteMessageSender sender = (ActorService.RemoteMessageSender) binder.queryLocalInterface(ActorService.LOCAL_SENDER_INTERFACE);
  
          sender.deliver(Transaction.<Object>obtain(mImpl, mMessage, mFailureHandler));
  
          ShadowLooper shadowLooper = Shadows.shadowOf(service.mThread.getLooper());
          shadowLooper.runOneTask();
  
          Mockito.verify(mMessage).invoke(mImpl);
          Assert.assertEquals(false, Shadows.shadowOf(service).isStoppedBySelf());
      }
test_case.class_method_signature: ActorServiceTest.deliver_deliverMessage_always()
test_case.full_signature: @SuppressWarnings("unchecked") @Test public void deliver_deliverMessage_always()
test_case.identifier: deliver_deliverMessage_always
test_case.invocations: createService onBind queryLocalInterface deliver obtain shadowOf getLooper runOneTask invoke verify assertEquals isStoppedBySelf shadowOf
test_case.modifiers: @SuppressWarnings("unchecked") @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void deliver_deliverMessage_always()
focal_class.declarator: LOCAL_SENDER_INTERFACE = "ServiceMessageSender"
focal_class.modifier: static final
focal_class.original_string: static final String LOCAL_SENDER_INTERFACE = "ServiceMessageSender";
focal_class.type: String
focal_class.var_name: LOCAL_SENDER_INTERFACE
focal_class.declarator: ACTION_DIRECT_START = "com.truecaller.androidactors.ActorService"
focal_class.modifier: static final
focal_class.original_string: static final String ACTION_DIRECT_START = "com.truecaller.androidactors.ActorService";
focal_class.type: String
focal_class.var_name: ACTION_DIRECT_START
focal_class.declarator: mServiceName
focal_class.modifier: @NonNull
      private final
focal_class.original_string: @NonNull
      private final String mServiceName;
focal_class.type: String
focal_class.var_name: mServiceName
focal_class.declarator: mUseWakelocks
focal_class.modifier: private final
focal_class.original_string: private final boolean mUseWakelocks;
focal_class.type: boolean
focal_class.var_name: mUseWakelocks
focal_class.declarator: mStopDelay
focal_class.modifier: private final
focal_class.original_string: private final long mStopDelay;
focal_class.type: long
focal_class.var_name: mStopDelay
focal_class.declarator: mThread
focal_class.modifier: @VisibleForTesting
focal_class.original_string: @VisibleForTesting
      /* package */ HandlerThread mThread;
focal_class.type: HandlerThread
focal_class.var_name: mThread
focal_class.declarator: mBinder
focal_class.modifier: @Nullable
      private
focal_class.original_string: @Nullable
      private Binder mBinder;
focal_class.type: Binder
focal_class.var_name: mBinder
focal_class.declarator: mJobEngine = null
focal_class.modifier: @Nullable
      private
focal_class.original_string: @Nullable
      private ActorJobEngine mJobEngine = null;
focal_class.type: ActorJobEngine
focal_class.var_name: mJobEngine
focal_class.file: actors-library/src/main/java/com/truecaller/androidactors/ActorService.java
focal_class.identifier: ActorService
focal_class.class_method_signature: ActorService.ActorService(@NonNull String name)
focal_class.full_signature: @SuppressWarnings({"unused", "WeakerAccess"}) protected  ActorService(@NonNull String name)
focal_class.identifier: ActorService
focal_class.modifiers: @SuppressWarnings({"unused", "WeakerAccess"}) protected
focal_class.parameters: (@NonNull String name)
focal_class.signature:  ActorService(@NonNull String name)
focal_class.class_method_signature: ActorService.ActorService(@NonNull String name, long stopDelay)
focal_class.full_signature: @SuppressWarnings({"unused", "WeakerAccess"}) protected  ActorService(@NonNull String name, long stopDelay)
focal_class.identifier: ActorService
focal_class.modifiers: @SuppressWarnings({"unused", "WeakerAccess"}) protected
focal_class.parameters: (@NonNull String name, long stopDelay)
focal_class.signature:  ActorService(@NonNull String name, long stopDelay)
focal_class.class_method_signature: ActorService.ActorService(@NonNull String name, long stopDelay, boolean useWakeLocks)
focal_class.full_signature: @SuppressWarnings({"unused", "WeakerAccess"}) protected  ActorService(@NonNull String name, long stopDelay, boolean useWakeLocks)
focal_class.identifier: ActorService
focal_class.modifiers: @SuppressWarnings({"unused", "WeakerAccess"}) protected
focal_class.parameters: (@NonNull String name, long stopDelay, boolean useWakeLocks)
focal_class.signature:  ActorService(@NonNull String name, long stopDelay, boolean useWakeLocks)
focal_class.class_method_signature: ActorService.onBind(Intent intent)
focal_class.full_signature: @Override public IBinder onBind(Intent intent)
focal_class.identifier: onBind
focal_class.modifiers: @Override public
focal_class.parameters: (Intent intent)
focal_class.return: IBinder
focal_class.signature: IBinder onBind(Intent intent)
focal_class.class_method_signature: ActorService.onCreate()
focal_class.full_signature: @Override public void onCreate()
focal_class.identifier: onCreate
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void onCreate()
focal_class.class_method_signature: ActorService.onStartCommand(Intent intent, int flags, int startId)
focal_class.full_signature: @Override public int onStartCommand(Intent intent, int flags, int startId)
focal_class.identifier: onStartCommand
focal_class.modifiers: @Override public
focal_class.parameters: (Intent intent, int flags, int startId)
focal_class.return: int
focal_class.signature: int onStartCommand(Intent intent, int flags, int startId)
focal_class.class_method_signature: ActorService.onDestroy()
focal_class.full_signature: @Override public void onDestroy()
focal_class.identifier: onDestroy
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void onDestroy()
focal_class.class_method_signature: ActorService.getLegacyBinder()
focal_class.full_signature: private IBinder getLegacyBinder()
focal_class.identifier: getLegacyBinder
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: IBinder
focal_class.signature: IBinder getLegacyBinder()
focal_class.class_method_signature: ActorService.getBinder()
focal_class.full_signature: @TargetApi(Build.VERSION_CODES.O) private IBinder getBinder()
focal_class.identifier: getBinder
focal_class.modifiers: @TargetApi(Build.VERSION_CODES.O) private
focal_class.parameters: ()
focal_class.return: IBinder
focal_class.signature: IBinder getBinder()
focal_class.superclass: extends Service
focal_method.body: @Override
      public IBinder onBind(Intent intent) {
          // If service was started on pre-Oreo or it was direct service start (not from JobScheduler)
          // we return binder which can be converted to commands executor
          if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O || ACTION_DIRECT_START.equals(intent.getAction())) {
              return getLegacyBinder();
          }
          return getBinder();
      }
focal_method.class_method_signature: ActorService.onBind(Intent intent)
focal_method.full_signature: @Override public IBinder onBind(Intent intent)
focal_method.identifier: onBind
focal_method.invocations: equals getAction getLegacyBinder getBinder
focal_method.modifiers: @Override public
focal_method.parameters: (Intent intent)
focal_method.return: IBinder
focal_method.signature: IBinder onBind(Intent intent)