message: Fix assertion in non-virtual checks
  Summary:
  The existing assertion of method list size in non-virtual check doesn't take into account for non concrete top method or methods.
  This missing logic I think is related to the issue open source repo:
diff: @@ -436,15 +436,15 @@ inline std::vector<DexMethod*> devirtualize(const SignatureMap& sig_map) {
  }
  for (const auto& meth : scope.methods) {
  if (!meth.first->is_concrete()) continue;
  - if (meth.second == FINAL) {
  + if (meth.second != FINAL) {
  + break;
  + }
  always_assert(scope.interfaces.size() == 0);
  - always_assert(scope.methods.size() == 1);
  non_virtual.push_back(meth.first);
  }
  }
  }
  }
  - }
  return non_virtual;
  }
  @@ -465,9 +465,12 @@ inline bool can_devirtualize(SignatureMap& sig_map, DexMethod* meth) {
  continue;
  }
  - if (scope.interfaces.size() == 0 &&
  - scope.methods.size() == 1) {
  - always_assert(scope.methods[0].second == FINAL);
  + for (const auto& m : scope.methods) {
  + if (!m.first->is_concrete()) continue;
  + if (m.second != FINAL) {
  + break;
  + }
  + always_assert(scope.interfaces.size() == 0);
  return true;
  }
  }
  