public override Statement CloneStatementOnly()
 {
     BlockStatement clonedBody = body != null ? body.CloneStatementOnly() as BlockStatement : null;
     LockStatement result = new LockStatement(Expression.CloneExpressionOnly(), clonedBody, null);
     CopyParentAndLabel(result);
     return result;
 }
		public override Statement Clone()
		{
            BlockStatement clonedBody = null;
            if (body != null)
            {
                clonedBody = body.Clone() as BlockStatement;
            }
			LockStatement result = new LockStatement(Expression.Clone(), clonedBody, this.mappedFinallyInstructions);
			CopyParentAndLabel(result);
            return result;
        }
		public override void VisitLockStatement(LockStatement expression)
		{
			WriteKeyword(KeyWordWriter.Lock);
			WriteSpace();
			WriteSpecialBetweenParenthesis(expression.Expression);
			WriteLine();
			Visit(expression.Body);
			WriteSpecialEndBlock(KeyWordWriter.Lock);
		}
 private void PrepareMatcher(StatementCollection statements, int statementIndex)
 {
     this.statements = statements;
     this.statementIndex = statementIndex;
     @try = null;
     this.body = null;
     this.@lock = null;
     this.lockObjectExpression = null;
     this.theLocalVariable = null;
     this.thePhiVariable = null;
     this.lockingInstructions.Clear();
 }
 public virtual void VisitLockStatement(LockStatement node)
 {
     Visit(node.Expression);
     Visit(node.Body);
 }