return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i16));
         else if (value is int i32)
             return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i32));
+        else if (value is byte u8)
+            return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u8));
         else if (value is ushort u16)
             return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u16));
         else if (value is uint u32)
                             SyntaxNodeList(
                                 Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId, default(uint))
                                     .AsSyntaxNodeOrToken(),
-                                Assignment(nameof(ComplexCombatData.MinimumKillCount), complexCombatData.MinimumKillCount, null)
+                                Assignment(nameof(ComplexCombatData.MinimumKillCount),
+                                        complexCombatData.MinimumKillCount, null)
                                     .AsSyntaxNodeOrToken(),
                                 Assignment(nameof(ComplexCombatData.RewardItemId), complexCombatData.RewardItemId, null)
                                     .AsSyntaxNodeOrToken(),
-                                Assignment(nameof(ComplexCombatData.RewardItemCount), complexCombatData.RewardItemCount, null)
+                                Assignment(nameof(ComplexCombatData.RewardItemCount), complexCombatData.RewardItemCount,
+                                        null)
                                     .AsSyntaxNodeOrToken(),
-                                AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags), complexCombatData.CompletionQuestVariablesFlags)
+                                AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags),
+                                        complexCombatData.CompletionQuestVariablesFlags)
                                     .AsSyntaxNodeOrToken()))));
-        }else if (value is null)
+        }
+        else if (value is QuestWorkValue qwv)
+        {
+            return ObjectCreationExpression(
+                    IdentifierName(nameof(QuestWorkValue)))
+                .WithArgumentList(
+                    ArgumentList(
+                        SeparatedList<ArgumentSyntax>(
+                            new SyntaxNodeOrToken[]
+                            {
+                                Argument(LiteralValue(qwv.High)),
+                                Token(SyntaxKind.CommaToken),
+                                Argument(LiteralValue(qwv.Low))
+                            })));
+        }
+        else if (value is List<QuestWorkValue> list)
+        {
+            return CollectionExpression(
+                SeparatedList<CollectionElementSyntax>(
+                    SyntaxNodeList(list.Select(x => ExpressionElement(
+                        LiteralValue(x)).AsSyntaxNodeOrToken()).ToArray())));
+        }
+        else if (value is null)
             return LiteralExpression(SyntaxKind.NullLiteralExpression);
         else
             throw new Exception($"Unsupported data type {value.GetType()} = {value}");