private TOut SolveInternal(IDecision <TIn, TOut> currentNode) => currentNode.Decider(currentNode, currentNode.Value) .Match(x => SolveInternal(x), y => y);