https://medium.com/@rjallu01/salesforce-apex-how-to-detect-apex-runtime-context-with-quiddity-306288e329e3