public static UnaryPreOperatorNode Create(UnaryPreOperatorType type, SubExpressionNode operand, Token token, int tokenIndex)
 {
     switch (type)
     {
         case UnaryPreOperatorType.Ampersand:
             return new AmpersandUnaryPreOperatorNode(operand, token, tokenIndex);
         case UnaryPreOperatorType.DoubleMinus:
             return new DoubleMinusUnaryPreOperatorNode(operand, token, tokenIndex);
         case UnaryPreOperatorType.DoublePlus:
             return new DoublePlusUnaryPreOperatorNode(operand, token, tokenIndex);
         case UnaryPreOperatorType.Exclamation:
             return new ExclamationUnaryPreOperatorNode(operand, token, tokenIndex);
         case UnaryPreOperatorType.Minus:
             return new MinusUnaryPreOperatorNode(operand, token, tokenIndex);
         case UnaryPreOperatorType.Star:
             return new StarUnaryPreOperatorNode(operand, token, tokenIndex);
         case UnaryPreOperatorType.Tilde:
             return new TildeUnaryPreOperatorNode(operand, token, tokenIndex);
         default:
             throw new InternalCompilerException("Unknown UnaryPreOperatorType.");
     }
 }
 protected UnaryPreOperatorNode(UnaryPreOperatorType operatorType, SubExpressionNode operand, Token token, int tokenIndex) : base(token, tokenIndex)
 {
     OperatorType = operatorType;
     Operand = operand;
 }