protected abstract void React(IEntity entity, ReagentPrototype reagent, ReagentUnit volume, Solution.Solution? source);
        public void React(ReactionMethod method, IEntity entity, ReagentPrototype reagent, ReagentUnit volume, Solution.Solution? source)
        {
            switch (method)
            {
                case ReactionMethod.Touch:
                    if (!Touch)
                        return;
                    break;
                case ReactionMethod.Injection:
                    if(!Injection)
                        return;
                    break;
                case ReactionMethod.Ingestion:
                    if(!Ingestion)
                        return;
                    break;
                default:
                    throw new ArgumentOutOfRangeException(nameof(method), method, null);
            }

            React(entity, reagent, volume, source);
        }