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; }