public override bool Equals(Expression other)
        {
            if (!(other is MakeRefExpression))
            {
                return(false);
            }
            MakeRefExpression makeRef = other as MakeRefExpression;

            if (this.theType.FullName != makeRef.theType.FullName)
            {
                return(false);
            }
            return(this.Expression.Equals(makeRef.Expression));
        }
		public override void VisitMakeRefExpression(MakeRefExpression node)
		{
			WriteKeyword("__makeref");
			WriteToken("(");
			Visit(node.Expression);
			WriteToken(")");
		}
        public override Expression CloneExpressionOnly()
        {
            MakeRefExpression result = new MakeRefExpression(Expression.CloneExpressionOnly(), this.theType, null);

            return(result);
        }
        public override Expression Clone()
        {
            MakeRefExpression result = new MakeRefExpression(Expression.Clone(), this.theType, instructions);

            return(result);
        }
 public virtual void VisitMakeRefExpression(MakeRefExpression node)
 {
     Visit(node.Expression);
 }
 public override Expression CloneExpressionOnly()
 {
     MakeRefExpression result = new MakeRefExpression(Expression.CloneExpressionOnly(), this.theType, null);
     return result;
 }
        public override Expression Clone()
        {
			MakeRefExpression result = new MakeRefExpression(Expression.Clone(), this.theType, instructions);
			return result;
        }
 public override void VisitMakeRefExpression(MakeRefExpression node)
 {
     if (state == SearchState.Propagation)
     {
         canBePropagated = false;
         return;
     }
     base.VisitMakeRefExpression(node);
 }