returns pointer on success, NULL indicates that the caller should clean up and exit
source not stored for this graph (policy: none)
no test coverage detected