private static void CheckContainer(IBlockContainer container)
        {
            foreach (var path in container.Paths())
            {
                bool blockReturns = false;
                for (int i = path.Block.Statements.Length - 1; i >= 0; i--)
                {
                    if (path.Block.Statements[i] is ReturnNode)
                    {
                        blockReturns = true;
                        break;
                    }

                    if (path.Block.Statements[i] is IBlockContainer)
                    {
                        if (((IBlockContainer)path.Block.Statements[i]).Paths().Any(containerPath => containerPath.WillRun))
                        {
                            blockReturns = true;
                        }

                        CheckContainer((IBlockContainer)path.Block.Statements[i]);
                    }
                }
                if (!blockReturns)
                {
                    throw new SyntaxErrorException("Path does not return a value.", path.ErrorRange);
                }
            }
        }