public override void VisitThisReferenceExpression(ThisReferenceExpression node)
		{
			WriteKeyword(KeyWordWriter.This);
		}
        private void GenerateForeachStatement()
        {
            if (foreachVariable == null)
            {
                foreachVariable = new VariableDefinition(foreachVariableType);
                foreachVariableInstructions.Clear();
                this.methodContext.VariablesToRename.Add(foreachVariable);
            }
            VariableDeclarationExpression vd = new VariableDeclarationExpression(foreachVariable, foreachVariableInstructions);

            Expression foreachCollectionExpression = foreachCollection.CloneAndAttachInstructions(foreachCollectionInstructions);
            if (foreachCollectionExpression is BaseReferenceExpression)
            {
                foreachCollectionExpression = new ThisReferenceExpression(this.methodContext.Method.DeclaringType, foreachCollectionExpression.UnderlyingSameMethodInstructions);
            }

            @foreach = new ForEachStatement(vd, foreachCollectionExpression, foreachBody, foreachConditionInstructions, theTry.Finally.UnderlyingSameMethodInstructions);
            GetCurrentFixer gcf = new GetCurrentFixer(theEnumerator, foreachVariable);
            gcf.Visit(@foreach);

            IsEnumeratorUsedVisitor enumeratorUsedVisitor = new IsEnumeratorUsedVisitor(theEnumerator);
            enumeratorUsedVisitor.Visit(@foreach);
            isEnumeratorUsedInsideForEach = enumeratorUsedVisitor.IsEnumeratorUsed;
        }
 public override Expression CloneExpressionOnly()
 {
     ThisReferenceExpression result = new ThisReferenceExpression(TargetType, null);
     return result;
 }
		public override Expression Clone()
		{
			ThisReferenceExpression result = new ThisReferenceExpression(TargetType, instructions);
			return result;
        }
 public virtual void VisitThisReferenceExpression(ThisReferenceExpression node)
 {
 }
        public override Expression CloneExpressionOnly()
        {
            ThisReferenceExpression result = new ThisReferenceExpression(TargetType, null);

            return(result);
        }
        public override Expression Clone()
        {
            ThisReferenceExpression result = new ThisReferenceExpression(TargetType, instructions);

            return(result);
        }