public override object VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data)
 {
     base.VisitUnaryOperatorExpression(unaryOperatorExpression, data);
     switch (unaryOperatorExpression.Op) {
         case UnaryOperatorType.Dereference:
             ReplaceCurrentNode(unaryOperatorExpression.Expression.Member("Target"));
             break;
         case UnaryOperatorType.AddressOf:
             ResolveResult rr = resolver.ResolveInternal(unaryOperatorExpression.Expression, ExpressionContext.Default);
             if (rr != null && rr.ResolvedType != null) {
                 TypeReference targetType = Refactoring.CodeGenerator.ConvertType(rr.ResolvedType, CreateContext());
                 TypeReference pointerType = new TypeReference("Pointer", new List<TypeReference>().add(targetType));
                 ReplaceCurrentNode(pointerType.New(unaryOperatorExpression.Expression));
             }
             break;
     }
     return null;
 }