private IParseTreeValue EvaluateLogicalNot(IParseTreeValue parseTreeValue) { var opProvider = new OperatorTypesProvider(parseTreeValue.ValueType, LogicalOperators.NOT); if (!parseTreeValue.ParsesToConstantValue) { //Unable to resolve to a value, return an expression var opType = opProvider.OperatorDeclaredType; opType = opType.Equals(string.Empty) ? Tokens.Variant : opProvider.OperatorDeclaredType; return(_valueFactory.CreateExpression($"{LogicalOperators.NOT} {parseTreeValue.Token}", opType)); } var value = parseTreeValue.AsLong(); return(_valueFactory.CreateDeclaredType((~value).ToString(CultureInfo.InvariantCulture), opProvider.OperatorDeclaredType)); }