public override string GetExpressionType(CompilationModel model)
        {
            var fullName = string.Format("{0}:{1}", Method, String.Join(":", Parameters.Select(e => e.GetExpressionType(model))));

            if (Expression != null)
            {
                return(model.GetClass(Expression.GetExpressionType(model)).GetMethod(fullName).Type);
            }

            return(model.GetClass(FindParent <Class>().Name).GetMethod(fullName).Type);
        }
        public override List <InstructionModel> GetInstructions(CompilationModel model)
        {
            var instructions = new List <InstructionModel>();
            var index        = model.GetClass(Expression.GetExpressionType(model)).GetFieldIndex(Property).ToString(CultureInfo.InvariantCulture);

            instructions.AddRange(Expression.GetInstructions(model));
            instructions.Add(new InstructionModel(Instructions.GetFieldInstruction, index)
            {
                Comment = model.GetComment(this)
            });

            return(instructions);
        }
        public override string GetExpressionType(CompilationModel model)
        {
            var @class = model.GetClass(Expression.GetExpressionType(model));

            return(@class.GetFieldType(Property));
        }