protected override void VisitCastSyntax(CastSyntax pNode)
        {
            base.VisitCastSyntax(pNode);

            if (!pNode.FromType.IsAssignableFrom(pNode.Type) &&
                (!IsStandard(pNode.FromType) || !IsStandard(pNode.Type)))
            {
                switch (_unit.CastExists(pNode.FromType, pNode.Type, out MethodDefinition d))
                {
                case Compiler.FindResult.Found:
                    pNode.SetMethod(d);
                    break;

                case Compiler.FindResult.NotFound:
                    CompilerErrors.CastDoesNotExist(pNode.FromType, pNode.Type, pNode.Span);
                    break;

                case Compiler.FindResult.IncorrectScope:
                    CompilerErrors.CastNotIsScope(pNode.FromType, pNode.Type, pNode.Span);
                    break;
                }
            }
        }