# Looks like some Objective C class bits are leaked, which is probably OK since
# those are singletons.
leak:realizeClassWithoutSwift
leak:objc_initializeClassPair_internal

# TODO: Under [NSManagedObjectContext executeFetchRequest] there are managed object bits that seem to be leaky.
leak:class_addMethod
leak:class_addIvar

# TODO: Leaks of blocks from dispatch source handlers that need to be investigated.
leak:_Block_copy

# TODO: OpenSSL random byte generation creates some sort of pools that we seem to never clean up.  This seems to be happening a _lot_.
leak:drbg_ctr_init
leak:rand_pool_new
leak:RAND_priv_bytes
leak:drbg_bytes

# TODO: OpenSSL ERR_get_state seems to leak.
leak:ERR_get_state

#TODO: Figure out why nw_path_monitor_create leaks. The leak can be reproduced using:
# -- testFile.cpp
#
##include <Network/Network.h>
#
#int main(int argc, char **argv) {
#  auto monitor = nw_path_monitor_create();
#  nw_release(monitor);
#  return 0;
#}
#
# -- testFile.mm (with -fobj-arc)
##include <Network/Network.h>
#
#int main(int argc, char **argv) {
#  __auto_type monitor = nw_path_monitor_create();
#  return 0;
#}
leak:nw_path_monitor_create

# TODO: See the previous comment about nw_path_monitor_create, since it also applies to nw_path_monitor_start
leak:nw_path_monitor_start
