diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java
index d8fcb90c7..e827fb045 100644
--- a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java
+++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java
@@ -47,6 +47,7 @@
 import io.ballerina.flowmodelgenerator.core.model.ModuleInfo;
 import io.ballerina.flowmodelgenerator.core.model.TypeData;
 import io.ballerina.flowmodelgenerator.core.utils.CommonUtils;
+import io.ballerina.flowmodelgenerator.core.utils.SourceCodeGenerator;
 import io.ballerina.flowmodelgenerator.core.utils.TypeTransformer;
 import io.ballerina.flowmodelgenerator.core.utils.TypeUtils;
 import io.ballerina.projects.Document;
@@ -160,7 +161,8 @@ public JsonElement updateType(Path filePath, TypeData typeData) {
         textEditsMap.put(filePath, textEdits);
 
         // Regenerate code snippet for the type
-        String codeSnippet = createCodeSnippet(typeData);
+        SourceCodeGenerator sourceCodeGenerator = new SourceCodeGenerator();
+        String codeSnippet = sourceCodeGenerator.generateCodeSnippetForType(typeData);
 
         SyntaxTree syntaxTree = this.typeDocument.syntaxTree();
         LineRange lineRange = typeData.codedata().lineRange();
@@ -176,14 +178,6 @@ public JsonElement updateType(Path filePath, TypeData typeData) {
         return gson.toJsonTree(textEditsMap);
     }
 
-    private String createCodeSnippet(TypeData typeData) {
-        return switch (typeData.codedata().node()) {
-            case RECORD -> createRecordTypeDefCodeSnippet(typeData);
-            // TODO: Handle other kinds of type: service-decl, array, union, error, future, map, stream, intersection
-            default -> "";
-        };
-    }
-
     private void addMemberTypes(TypeSymbol typeSymbol, Map<String, Symbol> symbolMap) {
         // Record
         switch (typeSymbol.typeKind()) {
@@ -411,53 +405,6 @@ private void addDependencyTypes(TypeSymbol typeSymbol, Map<String, Object> refer
         }
     }
 
-    private String createRecordTypeDefCodeSnippet(TypeData typeData) {
-        StringBuilder recordBuilder = new StringBuilder();
-
-        // Add documentation if present
-        if (typeData.metadata().description() != null && !typeData.metadata().description().isEmpty()) {
-            recordBuilder.append(CommonUtils.convertToBalDocs(typeData.metadata().description()));
-        }
-
-        // Add type name
-        recordBuilder.append("type ")
-                .append(typeData.name())
-                .append(" record {|\n");
-
-        // Add includes
-        for (String include : typeData.includes()) {
-            recordBuilder.append("*").append(include).append(";\n");
-        }
-
-        // Add members
-
-        typeData.members().forEach(member -> {
-            if (member.docs() != null && !member.docs().isEmpty()) {
-                recordBuilder.append(CommonUtils.convertToBalDocs(member.docs()));
-            }
-
-            recordBuilder
-                    .append(member.type())
-                    .append(" ")
-                    .append(member.name())
-                    .append((member.defaultValue() != null && !member.defaultValue().isEmpty()) ?
-                            " = " + member.defaultValue() : "")
-                    .append(";\n");
-        });
-
-        // Add rest member if present
-        Optional.ofNullable(typeData.restMember()).ifPresent(restMember -> {
-            recordBuilder
-                    .append(restMember.type())
-                    .append("...;\n");
-        });
-
-        // Close the record
-        recordBuilder.append("|};\n");
-
-        return recordBuilder.toString();
-    }
-
     record TypeDataWithRefs(Object type, List<Object> refs) {
     }
 }
diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/SourceCodeGenerator.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/SourceCodeGenerator.java
new file mode 100644
index 000000000..da4ca75c4
--- /dev/null
+++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/SourceCodeGenerator.java
@@ -0,0 +1,279 @@
+/*
+ *  Copyright (c) 2025, WSO2 LLC. (http://www.wso2.com)
+ *
+ *  WSO2 LLC. licenses this file to you under the Apache License,
+ *  Version 2.0 (the "License"); you may not use this file except
+ *  in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package io.ballerina.flowmodelgenerator.core.utils;
+
+import com.google.gson.Gson;
+import io.ballerina.flowmodelgenerator.core.model.Member;
+import io.ballerina.flowmodelgenerator.core.model.NodeKind;
+import io.ballerina.flowmodelgenerator.core.model.TypeData;
+
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * Code snippet generator.
+ *
+ * @since 2.0.0
+ */
+public class SourceCodeGenerator {
+    private final Gson gson = new Gson();
+
+    public String generateCodeSnippetForType(TypeData typeData) {
+        NodeKind nodeKind = typeData.codedata().node();
+        return switch (nodeKind) {
+            case SERVICE_DECLARATION, CLASS -> "";  // TODO: Implement this
+            case ENUM -> generateEnumCodeSnippet(typeData);
+            default -> generateTypeDefCodeSnippet(typeData);
+        };
+    }
+
+    private String generateEnumCodeSnippet(TypeData typeData) {
+        StringBuilder stringBuilder = new StringBuilder();
+
+        // Add documentation if present
+        if (typeData.metadata().description() != null && !typeData.metadata().description().isEmpty()) {
+            stringBuilder.append(CommonUtils.convertToBalDocs(typeData.metadata().description()));
+        }
+
+        // Add enum names
+        stringBuilder.append("enum ")
+                .append(typeData.name())
+                .append(" {");
+
+        // Add enum values
+        for (int i = 0; i < typeData.members().size(); i++) {
+            Member member = typeData.members().get(i);
+            stringBuilder.append("\n\t")
+                    .append(member.name())
+                    .append((member.defaultValue() != null && !member.defaultValue().isEmpty()) ?
+                            " = " + member.defaultValue() : "");
+            if (i < typeData.members().size() - 1) {
+                stringBuilder.append(",");
+            }
+        }
+
+        return stringBuilder.append("\n}\n").toString();
+    }
+
+    private String generateTypeDefCodeSnippet(TypeData typeData) {
+        StringBuilder stringBuilder = new StringBuilder();
+
+        // Add documentation if present
+        if (typeData.metadata().description() != null && !typeData.metadata().description().isEmpty()) {
+            stringBuilder.append(CommonUtils.convertToBalDocs(typeData.metadata().description()));
+        }
+
+        // Add type name
+        stringBuilder.append("type ")
+                .append(typeData.name())
+                .append(" ");
+
+        generateTypeDescriptor(typeData, stringBuilder);
+
+        return stringBuilder.append(";\n").toString();
+    }
+
+    private void generateTypeDescriptor(Object typeDescriptor, StringBuilder stringBuilder) {
+        if (typeDescriptor instanceof String) { // Type reference
+            stringBuilder.append((String) typeDescriptor);
+            return;
+        }
+
+        TypeData typeData;
+        if (typeDescriptor instanceof Map) {
+            String json = gson.toJson(typeDescriptor);
+            typeData = gson.fromJson(json, TypeData.class);
+        } else {
+            typeData = (TypeData) typeDescriptor;
+        }
+
+        switch (typeData.codedata().node()) {
+            case RECORD -> generateRecordTypeDescriptor(typeData, stringBuilder);
+            case ARRAY -> generateArrayTypeDescriptor(typeData, stringBuilder);
+            case MAP -> generateMapTypeDescriptor(typeData, stringBuilder);
+            case STREAM -> generateStreamTypeDescriptor(typeData, stringBuilder);
+            case FUTURE -> generateFutureTypeDescriptor(typeData, stringBuilder);
+            case TYPEDESC -> generateTypedescTypeDescriptor(typeData, stringBuilder);
+            case ERROR -> generateErrorTypeDescriptor(typeData, stringBuilder);
+            case UNION -> generateUnionTypeDescriptor(typeData, stringBuilder);
+            case INTERSECTION -> generateIntersectionTypeDescriptor(typeData, stringBuilder);
+            case OBJECT -> generateObjectTypeDescriptor(typeData, stringBuilder);
+            case TABLE -> generateTableTypeDescriptor(typeData, stringBuilder);
+            default -> throw new UnsupportedOperationException("Unsupported type descriptor: " + typeDescriptor);
+        }
+    }
+
+    private void generateObjectTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        stringBuilder.append("object {");
+
+        // Add fields
+        for (Member member : typeData.members()) {
+            generateMember(member, stringBuilder, false);
+        }
+
+        // TODO: Add functions
+        stringBuilder.append("\n}");
+    }
+
+    private void generateRecordTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        // Assumption: a record is always a closed records
+        stringBuilder.append("record {|");
+
+        // Add inclusions
+        typeData.includes().forEach(include -> stringBuilder.append("\n\t*").append(include).append(";"));
+
+        // Add fields
+        for (Member member : typeData.members()) {
+            generateMember(member, stringBuilder, true);
+        }
+
+        // Add rest field
+        Optional.ofNullable(typeData.restMember()).ifPresent(restMember -> {
+            stringBuilder.append("\n\t");
+            generateTypeDescriptor(restMember.type(), stringBuilder);
+            stringBuilder.append(" ...;");
+        });
+        stringBuilder.append("\n|}");
+    }
+
+    private void generateMember(Member member, StringBuilder stringBuilder, boolean withDefaultValue) {
+        if (member.docs() != null && !member.docs().isEmpty()) {
+            stringBuilder
+                    .append("\n\t")
+                    .append(CommonUtils.convertToBalDocs(member.docs()));
+        } else {
+            stringBuilder.append("\n");
+        }
+        stringBuilder.append("\t");
+        generateTypeDescriptor(member.type(), stringBuilder);
+        stringBuilder.append(" ").append(member.name());
+
+        if (withDefaultValue) {
+            stringBuilder.append((member.defaultValue() != null && !member.defaultValue().isEmpty()) ?
+                    " = " + member.defaultValue() : "");
+        }
+        stringBuilder.append(";");
+    }
+
+    private void generateTableTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (!typeData.members().isEmpty()) {
+            stringBuilder.append("table<");
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+            stringBuilder.append(">");
+
+            if (typeData.members().size() > 1) {
+                stringBuilder.append(" key<");
+                generateTypeDescriptor(typeData.members().get(1).type(), stringBuilder);
+                stringBuilder.append(">");
+            }
+
+            // TODO: key specifier is not yet supported
+        }
+    }
+
+    private void generateIntersectionTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() <= 1) {
+            return;
+        }
+        for (Member member : typeData.members()) {
+            if (member.type() instanceof TypeData) {
+                if (((TypeData) member.type()).codedata().node() == NodeKind.INTERSECTION) {
+                    stringBuilder.append("(");
+                    generateTypeDescriptor(member.type(), stringBuilder);
+                    stringBuilder.append(")");
+                } else {
+                    generateTypeDescriptor(member.type(), stringBuilder);
+                }
+            } else {
+                generateTypeDescriptor(member.type(), stringBuilder);
+            }
+            stringBuilder.append(" & ");
+        }
+    }
+
+    private void generateUnionTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() <= 1) {
+            return;
+        }
+        for (int i = 0; i < typeData.members().size(); i++) {
+            Member member = typeData.members().get(i);
+            if (member.type() instanceof TypeData) {
+                if (((TypeData) member.type()).codedata().node() == NodeKind.UNION) {
+                    stringBuilder.append("(");
+                    generateTypeDescriptor(member.type(), stringBuilder);
+                    stringBuilder.append(")");
+                } else {
+                    generateTypeDescriptor(member.type(), stringBuilder);
+                }
+            } else {
+                generateTypeDescriptor(member.type(), stringBuilder);
+            }
+            if (i < typeData.members().size() - 1) {
+                stringBuilder.append("|");
+            }
+        }
+    }
+
+    private void generateErrorTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() == 1) {
+            stringBuilder.append("error<");
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+            stringBuilder.append(">");
+        }
+    }
+
+    private void generateTypedescTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() == 1) {
+            stringBuilder.append("typedesc<");
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+            stringBuilder.append(">");
+        }
+    }
+
+    private void generateFutureTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() == 1) {
+            stringBuilder.append("future<");
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+            stringBuilder.append(">");
+        }
+    }
+
+    private void generateStreamTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() == 1) {
+            stringBuilder.append("stream<");
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+            stringBuilder.append(">");
+        }
+    }
+
+    private void generateMapTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() == 1) {
+            stringBuilder.append("map<");
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+            stringBuilder.append(">");
+        }
+    }
+
+    private void generateArrayTypeDescriptor(TypeData typeData, StringBuilder stringBuilder) {
+        if (typeData.members().size() == 1) {
+            generateTypeDescriptor(typeData.members().getFirst().type(), stringBuilder);
+        }
+        stringBuilder.append("[]");
+    }
+}
diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/TypeTransformer.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/TypeTransformer.java
index 647a2a6ae..0eca2f0aa 100644
--- a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/TypeTransformer.java
+++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/utils/TypeTransformer.java
@@ -231,12 +231,17 @@ public Object transform(EnumSymbol enumSymbol) {
         Member.MemberBuilder memberBuilder = new Member.MemberBuilder();
         enumSymbol.members().forEach(enumMember -> {
             String name = enumMember.getName().get();
-            Member member = memberBuilder
+            ConstantValue constValue = (ConstantValue) enumMember.constValue();
+            String constValueAsString = "\"" + constValue.value() + "\"";
+            memberBuilder
                     .name(name)
                     .kind(Member.MemberKind.NAME)
-                    .type(((ConstantValue) enumMember.constValue()).value().toString())
-                    .refs(List.of())
-                    .build();
+                    .type(constValueAsString)
+                    .refs(List.of());
+            if (!constValue.value().equals(enumMember.getName().get())) {
+                memberBuilder.defaultValue(constValueAsString);
+            }
+            Member member = memberBuilder.build();
             members.putIfAbsent(name, member);
         });
         typeDataBuilder.members(members);
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/typesmanager/CreateAndUpdateTypeTest.java b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/typesmanager/CreateAndUpdateTypeTest.java
index 3defc8220..c2dfe70a0 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/typesmanager/CreateAndUpdateTypeTest.java
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/typesmanager/CreateAndUpdateTypeTest.java
@@ -68,9 +68,14 @@ protected Object[] getConfigsList() {
         return new Object[][]{
                 {Path.of("create_record_type1.json")},
                 {Path.of("create_record_type2.json")},
+                {Path.of("create_record_type3.json")},
+                {Path.of("create_union_type.json")},
+                {Path.of("create_enum_type.json")},
+                {Path.of("create_table_type.json")},
                 {Path.of("update_record_type1.json")},
                 {Path.of("update_record_type2.json")},
                 {Path.of("update_record_type3.json")},
+                {Path.of("update_record_type4.json")},
         };
     }
 
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_enum_type.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_enum_type.json
new file mode 100644
index 000000000..0a96f9b92
--- /dev/null
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_enum_type.json
@@ -0,0 +1,83 @@
+{
+  "filePath": "test_pack1/types.bal",
+  "description": "Create a new union type",
+  "type": {
+    "name": "Gender",
+    "editable": true,
+    "metadata": {
+      "label": "Gender",
+      "description": ""
+    },
+    "codedata": {
+      "node": "ENUM"
+    },
+    "properties": {
+      "isArray": {
+        "metadata": {
+          "label": "Is array type",
+          "description": "Is this type an array or list value"
+        },
+        "valueType": "FLAG",
+        "value": "false",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      },
+      "arraySize": {
+        "metadata": {
+          "label": "Size of the array",
+          "description": "Array dimensions"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": false,
+        "editable": false,
+        "advanced": false
+      },
+      "description": {
+        "metadata": {
+          "label": "Type description",
+          "description": "Detailed description about the type"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      }
+    },
+    "members": [
+      {
+        "kind": "NAME",
+        "refs": [],
+        "type": "\"male\"",
+        "name": "MALE",
+        "defaultValue": "\"male\""
+      },
+      {
+        "kind": "NAME",
+        "refs": [],
+        "type": "\"female\"",
+        "name": "FEMALE",
+        "defaultValue": "\"female\""
+      }
+    ]
+  },
+  "output": {
+    "test_pack1/types.bal": [
+      {
+        "range": {
+          "start": {
+            "line": 68,
+            "character": 0
+          },
+          "end": {
+            "line": 68,
+            "character": 0
+          }
+        },
+        "newText": "enum Gender {\n\tMALE = \"male\",\n\tFEMALE = \"female\"\n}\n"
+      }
+    ]
+  }
+}
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type1.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type1.json
index fda31ca4a..bec164c80 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type1.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type1.json
@@ -58,6 +58,22 @@
       }
     },
     "members": [
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "int",
+        "name": "id",
+        "docs": "id of the person",
+        "defaultValue": "12"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "string",
+        "name": "name",
+        "docs": "name of the person",
+        "defaultValue": "\"John Doe\""
+      },
       {
         "kind": "FIELD",
         "refs": [
@@ -77,22 +93,6 @@
         "name": "dob",
         "docs": "date of birth",
         "defaultValue": "getDefaultDob()"
-      },
-      {
-        "kind": "FIELD",
-        "refs": [],
-        "type": "string",
-        "name": "name",
-        "docs": "name of the person",
-        "defaultValue": "\"John Doe\""
-      },
-      {
-        "kind": "FIELD",
-        "refs": [],
-        "type": "int",
-        "name": "id",
-        "docs": "id of the person",
-        "defaultValue": "12"
       }
     ],
     "includes": []
@@ -110,7 +110,7 @@
             "character": 0
           }
         },
-        "newText": "# Person record\n# Used to represent person object\ntype Person record {|\n# addresses of the person\nAddress[] addresses = [];\n# date of birth\ntime:Utc dob = getDefaultDob();\n# name of the person\nstring name = \"John Doe\";\n# id of the person\nint id = 12;\n|};\n"
+        "newText": "# Person record\n# Used to represent person object\ntype Person record {|\n\t# id of the person\n\tint id = 12;\n\t# name of the person\n\tstring name = \"John Doe\";\n\t# addresses of the person\n\tAddress[] addresses = [];\n\t# date of birth\n\ttime:Utc dob = getDefaultDob();\n|};\n"
       }
     ]
   }
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type2.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type2.json
index ef9bdd639..f81f0aaea 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type2.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type2.json
@@ -58,6 +58,22 @@
       }
     },
     "members": [
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "int",
+        "name": "id",
+        "docs": "id of the person",
+        "defaultValue": "12"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "string",
+        "name": "name",
+        "docs": "name of the person",
+        "defaultValue": "\"John Doe\""
+      },
       {
         "kind": "FIELD",
         "refs": [
@@ -77,22 +93,6 @@
         "name": "dob",
         "docs": "date of birth",
         "defaultValue": "getDefaultDob()"
-      },
-      {
-        "kind": "FIELD",
-        "refs": [],
-        "type": "string",
-        "name": "name",
-        "docs": "name of the person",
-        "defaultValue": "\"John Doe\""
-      },
-      {
-        "kind": "FIELD",
-        "refs": [],
-        "type": "int",
-        "name": "id",
-        "docs": "id of the person",
-        "defaultValue": "12"
       }
     ],
     "includes": [
@@ -113,7 +113,7 @@
             "character": 0
           }
         },
-        "newText": "# Person record\n# Used to represent person object\ntype Person record {|\n*Employee;\n*User;\n# addresses of the person\nAddress[] addresses = [];\n# date of birth\ntime:Utc dob = getDefaultDob();\n# name of the person\nstring name = \"John Doe\";\n# id of the person\nint id = 12;\n|};\n"
+        "newText": "# Person record\n# Used to represent person object\ntype Person record {|\n\t*Employee;\n\t*User;\n\t# id of the person\n\tint id = 12;\n\t# name of the person\n\tstring name = \"John Doe\";\n\t# addresses of the person\n\tAddress[] addresses = [];\n\t# date of birth\n\ttime:Utc dob = getDefaultDob();\n|};\n"
       }
     ]
   }
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type3.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type3.json
new file mode 100644
index 000000000..1dd3f2f13
--- /dev/null
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_record_type3.json
@@ -0,0 +1,252 @@
+{
+  "filePath": "test_pack2/types.bal",
+  "description": "Create a new record type",
+  "type": {
+    "name": "User",
+    "editable": true,
+    "metadata": {
+      "label": "User",
+      "description": "User record type\nSimple record type with docs, anonymous field types (union, record)"
+    },
+    "codedata": {
+      "node": "RECORD"
+    },
+    "properties": {
+      "name": {
+        "metadata": {
+          "label": "Type name",
+          "description": "Unique name to identify the type"
+        },
+        "valueType": "IDENTIFIER",
+        "value": "User",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "description": {
+        "metadata": {
+          "label": "Type description",
+          "description": "Detailed description about the type"
+        },
+        "valueType": "STRING",
+        "value": "User record type\nSimple record type with docs, anonymous field types (union, record)",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "isArray": {
+        "metadata": {
+          "label": "Is array type",
+          "description": "Is this type an array or list value"
+        },
+        "valueType": "FLAG",
+        "value": "false",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      },
+      "arraySize": {
+        "metadata": {
+          "label": "Size of the array",
+          "description": "Array dimensions"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      }
+    },
+    "members": [
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": {
+          "editable": false,
+          "codedata": {
+            "node": "RECORD"
+          },
+          "properties": {
+            "isArray": {
+              "metadata": {
+                "label": "Is array type",
+                "description": "Is this type an array or list value"
+              },
+              "valueType": "FLAG",
+              "value": "false",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            },
+            "arraySize": {
+              "metadata": {
+                "label": "Size of the array",
+                "description": "Array dimensions"
+              },
+              "valueType": "STRING",
+              "value": "",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            }
+          },
+          "members": [
+            {
+              "kind": "FIELD",
+              "refs": [],
+              "type": "int",
+              "name": "iA",
+              "docs": ""
+            },
+            {
+              "kind": "FIELD",
+              "refs": [],
+              "type": {
+                "editable": false,
+                "codedata": {
+                  "node": "RECORD"
+                },
+                "properties": {
+                  "isArray": {
+                    "metadata": {
+                      "label": "Is array type",
+                      "description": "Is this type an array or list value"
+                    },
+                    "valueType": "FLAG",
+                    "value": "false",
+                    "optional": true,
+                    "editable": true,
+                    "advanced": true
+                  },
+                  "arraySize": {
+                    "metadata": {
+                      "label": "Size of the array",
+                      "description": "Array dimensions"
+                    },
+                    "valueType": "STRING",
+                    "value": "",
+                    "optional": true,
+                    "editable": true,
+                    "advanced": true
+                  }
+                },
+                "members": [
+                  {
+                    "kind": "FIELD",
+                    "refs": [],
+                    "type": "int",
+                    "name": "iiA",
+                    "docs": ""
+                  }
+                ],
+                "includes": []
+              },
+              "name": "iB",
+              "docs": ""
+            }
+          ],
+          "includes": []
+        },
+        "name": "field1",
+        "docs": "Anonymous nested record type"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": {
+          "editable": false,
+          "codedata": {
+            "node": "UNION"
+          },
+          "properties": {
+            "isArray": {
+              "metadata": {
+                "label": "Is array type",
+                "description": "Is this type an array or list value"
+              },
+              "valueType": "FLAG",
+              "value": "false",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            },
+            "arraySize": {
+              "metadata": {
+                "label": "Size of the array",
+                "description": "Array dimensions"
+              },
+              "valueType": "STRING",
+              "value": "",
+              "optional": false,
+              "editable": false,
+              "advanced": false
+            }
+          },
+          "members": [
+            {
+              "kind": "TYPE",
+              "refs": [],
+              "type": "xml",
+              "name": "xml"
+            },
+            {
+              "kind": "TYPE",
+              "refs": [
+                "UserAddress"
+              ],
+              "type": "UserAddress",
+              "name": "UserAddress"
+            },
+            {
+              "kind": "TYPE",
+              "refs": [
+                "City"
+              ],
+              "type": "City",
+              "name": "City"
+            }
+          ]
+        },
+        "name": "address",
+        "docs": "Union of of type-refs and a built-in type"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "string",
+        "name": "name",
+        "docs": "Name of the employee"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "int",
+        "name": "age",
+        "docs": "Age of the employee"
+      }
+    ],
+    "restMember": {
+      "kind": "FIELD",
+      "refs": [],
+      "type": "anydata"
+    },
+    "includes": []
+  },
+  "output": {
+    "test_pack2/types.bal": [
+      {
+        "range": {
+          "start": {
+            "line": 4,
+            "character": 0
+          },
+          "end": {
+            "line": 4,
+            "character": 0
+          }
+        },
+        "newText": "# User record type\n# Simple record type with docs, anonymous field types (union, record)\ntype User record {|\n\t# Anonymous nested record type\n\trecord {|\n\tint iA;\n\trecord {|\n\tint iiA;\n|} iB;\n|} field1;\n\t# Union of of type-refs and a built-in type\n\txml|UserAddress|City address;\n\t# Name of the employee\n\tstring name;\n\t# Age of the employee\n\tint age;\n\tanydata ...;\n|};\n"
+      }
+    ]
+  }
+}
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_table_type.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_table_type.json
new file mode 100644
index 000000000..c2ac3fb0e
--- /dev/null
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_table_type.json
@@ -0,0 +1,148 @@
+{
+  "filePath": "test_pack1/types.bal",
+  "description": "Create a new table type",
+  "type": {
+    "name": "AddressTable",
+    "editable": true,
+    "metadata": {
+      "label": "AddressTable",
+      "description": ""
+    },
+    "codedata": {
+      "node": "TABLE",
+      "lineRange": {
+        "fileName": "types.bal",
+        "startLine": {
+          "line": 67,
+          "offset": 5
+        },
+        "endLine": {
+          "line": 67,
+          "offset": 17
+        }
+      }
+    },
+    "properties": {
+      "name": {
+        "metadata": {
+          "label": "Type name",
+          "description": "Unique name to identify the type"
+        },
+        "valueType": "IDENTIFIER",
+        "value": "AddressTable",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "description": {
+        "metadata": {
+          "label": "Type description",
+          "description": "Detailed description about the type"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "isArray": {
+        "metadata": {
+          "label": "Is array type",
+          "description": "Is this type an array or list value"
+        },
+        "valueType": "FLAG",
+        "value": "false",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      },
+      "arraySize": {
+        "metadata": {
+          "label": "Size of the array",
+          "description": "Array dimensions"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": false,
+        "editable": false,
+        "advanced": false
+      }
+    },
+    "members": [
+      {
+        "kind": "TYPE",
+        "refs": [
+          "Address"
+        ],
+        "type": "Address",
+        "name": "rowType"
+      },
+      {
+        "kind": "TYPE",
+        "refs": [],
+        "type": {
+          "editable": false,
+          "codedata": {
+            "node": "UNION"
+          },
+          "properties": {
+            "isArray": {
+              "metadata": {
+                "label": "Is array type",
+                "description": "Is this type an array or list value"
+              },
+              "valueType": "FLAG",
+              "value": "false",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            },
+            "arraySize": {
+              "metadata": {
+                "label": "Size of the array",
+                "description": "Array dimensions"
+              },
+              "valueType": "STRING",
+              "value": "",
+              "optional": false,
+              "editable": false,
+              "advanced": false
+            }
+          },
+          "members": [
+            {
+              "kind": "TYPE",
+              "refs": [],
+              "type": "string",
+              "name": "string"
+            },
+            {
+              "kind": "TYPE",
+              "refs": [],
+              "type": "int",
+              "name": "int"
+            }
+          ]
+        },
+        "name": "keyConstraintType"
+      }
+    ]
+  },
+  "output": {
+    "test_pack1/types.bal": [
+      {
+        "range": {
+          "start": {
+            "line": 67,
+            "character": 0
+          },
+          "end": {
+            "line": 67,
+            "character": 49
+          }
+        },
+        "newText": "type AddressTable table<Address> key<string|int>;\n"
+      }
+    ]
+  }
+}
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_union_type.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_union_type.json
new file mode 100644
index 000000000..7e9dfaeee
--- /dev/null
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/create_union_type.json
@@ -0,0 +1,104 @@
+{
+  "filePath": "test_pack1/types.bal",
+  "description": "Create a new union type",
+  "type": {
+    "name": "Misc",
+    "editable": true,
+    "metadata": {
+      "label": "Misc",
+      "description": ""
+    },
+    "codedata": {
+      "node": "UNION"
+    },
+    "properties": {
+      "name": {
+        "metadata": {
+          "label": "Type name",
+          "description": "Unique name to identify the type"
+        },
+        "valueType": "IDENTIFIER",
+        "value": "Misc",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "description": {
+        "metadata": {
+          "label": "Type description",
+          "description": "Detailed description about the type"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "isArray": {
+        "metadata": {
+          "label": "Is array type",
+          "description": "Is this type an array or list value"
+        },
+        "valueType": "FLAG",
+        "value": "false",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      },
+      "arraySize": {
+        "metadata": {
+          "label": "Size of the array",
+          "description": "Array dimensions"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": false,
+        "editable": false,
+        "advanced": false
+      }
+    },
+    "members": [
+      {
+        "kind": "TYPE",
+        "refs": [
+          "Color"
+        ],
+        "type": "Color",
+        "name": "Color"
+      },
+      {
+        "kind": "TYPE",
+        "refs": [
+          "Employees"
+        ],
+        "type": "Employees",
+        "name": "Employees"
+      },
+      {
+        "kind": "TYPE",
+        "refs": [
+          "Person"
+        ],
+        "type": "Person",
+        "name": "Person"
+      }
+    ]
+  },
+  "output": {
+    "test_pack1/types.bal": [
+      {
+        "range": {
+          "start": {
+            "line": 68,
+            "character": 0
+          },
+          "end": {
+            "line": 68,
+            "character": 0
+          }
+        },
+        "newText": "type Misc Color|Employees|Person;\n"
+      }
+    ]
+  }
+}
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type1.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type1.json
index 50aeca6aa..126f87fa4 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type1.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type1.json
@@ -65,19 +65,19 @@
       {
         "kind": "NAME",
         "refs": [],
-        "type": "RED",
+        "type": "\"RED\"",
         "name": "RED"
       },
       {
         "kind": "NAME",
         "refs": [],
-        "type": "YELLOW",
+        "type": "\"YELLOW\"",
         "name": "YELLOW"
       },
       {
         "kind": "NAME",
         "refs": [],
-        "type": "GREEN",
+        "type": "\"GREEN\"",
         "name": "GREEN"
       }
     ]
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type2.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type2.json
index 6ce22c73a..54bbf18ca 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type2.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/get_enum_type2.json
@@ -65,14 +65,16 @@
       {
         "kind": "NAME",
         "refs": [],
-        "type": "male",
-        "name": "MALE"
+        "type": "\"male\"",
+        "name": "MALE",
+        "defaultValue": "\"male\""
       },
       {
         "kind": "NAME",
         "refs": [],
-        "type": "female",
-        "name": "FEMALE"
+        "type": "\"female\"",
+        "name": "FEMALE",
+        "defaultValue": "\"female\""
       }
     ]
   },
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type1.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type1.json
index 50378cc07..febd82438 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type1.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type1.json
@@ -101,7 +101,7 @@
             "character": 3
           }
         },
-        "newText": "type Employee record {|\nPerson user;\nint id;\n|};\n"
+        "newText": "type Employee record {|\n\tPerson user;\n\tint id;\n|};\n"
       }
     ]
   }
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type2.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type2.json
index dfccf1bea..3b654f717 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type2.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type2.json
@@ -104,7 +104,7 @@
             "character": 3
           }
         },
-        "newText": "type Employee record {|\n*Person;\n*User;\nPerson user;\nint id;\n|};\n"
+        "newText": "type Employee record {|\n\t*Person;\n\t*User;\n\tPerson user;\n\tint id;\n|};\n"
       }
     ]
   }
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type3.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type3.json
index 8f107cc77..3e7bae216 100644
--- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type3.json
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type3.json
@@ -104,7 +104,7 @@
             "character": 3
           }
         },
-        "newText": "type Employee record {|\n*Person;\nPerson user;\nint id = 23;\n|};\n"
+        "newText": "type Employee record {|\n\t*Person;\n\tPerson user;\n\tint id = 23;\n|};\n"
       }
     ]
   }
diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type4.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type4.json
new file mode 100644
index 000000000..b911520ae
--- /dev/null
+++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/types_manager/config/update_record_type4.json
@@ -0,0 +1,310 @@
+{
+  "filePath": "test_pack2/records.bal",
+  "description": "Update a complex record type",
+  "type": {
+    "name": "User",
+    "editable": true,
+    "metadata": {
+      "label": "User",
+      "description": "User record type\nSimple record type with docs, anonymous field types (union, record)"
+    },
+    "codedata": {
+      "node": "RECORD",
+      "lineRange": {
+        "fileName": "records.bal",
+        "startLine": {
+          "line": 4,
+          "offset": 5
+        },
+        "endLine": {
+          "line": 4,
+          "offset": 9
+        }
+      }
+    },
+    "properties": {
+      "name": {
+        "metadata": {
+          "label": "Type name",
+          "description": "Unique name to identify the type"
+        },
+        "valueType": "IDENTIFIER",
+        "value": "User",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "description": {
+        "metadata": {
+          "label": "Type description",
+          "description": "Detailed description about the type"
+        },
+        "valueType": "STRING",
+        "value": "User record type\nSimple record type with docs, anonymous field types (union, record)",
+        "optional": false,
+        "editable": true,
+        "advanced": false
+      },
+      "isArray": {
+        "metadata": {
+          "label": "Is array type",
+          "description": "Is this type an array or list value"
+        },
+        "valueType": "FLAG",
+        "value": "false",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      },
+      "arraySize": {
+        "metadata": {
+          "label": "Size of the array",
+          "description": "Array dimensions"
+        },
+        "valueType": "STRING",
+        "value": "",
+        "optional": true,
+        "editable": true,
+        "advanced": true
+      }
+    },
+    "members": [
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": {
+          "editable": false,
+          "codedata": {
+            "node": "RECORD"
+          },
+          "properties": {
+            "isArray": {
+              "metadata": {
+                "label": "Is array type",
+                "description": "Is this type an array or list value"
+              },
+              "valueType": "FLAG",
+              "value": "false",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            },
+            "arraySize": {
+              "metadata": {
+                "label": "Size of the array",
+                "description": "Array dimensions"
+              },
+              "valueType": "STRING",
+              "value": "",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            }
+          },
+          "members": [
+            {
+              "kind": "FIELD",
+              "refs": [],
+              "type": {
+                "editable": false,
+                "codedata": {
+                  "node": "UNION"
+                },
+                "properties": {
+                  "isArray": {
+                    "metadata": {
+                      "label": "Is array type",
+                      "description": "Is this type an array or list value"
+                    },
+                    "valueType": "FLAG",
+                    "value": "false",
+                    "optional": true,
+                    "editable": true,
+                    "advanced": true
+                  },
+                  "arraySize": {
+                    "metadata": {
+                      "label": "Size of the array",
+                      "description": "Array dimensions"
+                    },
+                    "valueType": "STRING",
+                    "value": "",
+                    "optional": false,
+                    "editable": false,
+                    "advanced": false
+                  }
+                },
+                "members": [
+                  {
+                    "kind": "TYPE",
+                    "refs": [
+                      "City"
+                    ],
+                    "type": "City",
+                    "name": "string"
+                  },
+                  {
+                    "kind": "TYPE",
+                    "refs": [
+                      "UserAddress"
+                    ],
+                    "type": "UserAddress",
+                    "name": "int"
+                  }
+                ]
+              },
+              "name": "iA",
+              "docs": ""
+            },
+            {
+              "kind": "FIELD",
+              "refs": [],
+              "type": {
+                "editable": false,
+                "codedata": {
+                  "node": "RECORD"
+                },
+                "properties": {
+                  "isArray": {
+                    "metadata": {
+                      "label": "Is array type",
+                      "description": "Is this type an array or list value"
+                    },
+                    "valueType": "FLAG",
+                    "value": "false",
+                    "optional": true,
+                    "editable": true,
+                    "advanced": true
+                  },
+                  "arraySize": {
+                    "metadata": {
+                      "label": "Size of the array",
+                      "description": "Array dimensions"
+                    },
+                    "valueType": "STRING",
+                    "value": "",
+                    "optional": true,
+                    "editable": true,
+                    "advanced": true
+                  }
+                },
+                "members": [
+                  {
+                    "kind": "FIELD",
+                    "refs": [],
+                    "type": "int",
+                    "name": "iiA",
+                    "docs": ""
+                  }
+                ],
+                "includes": []
+              },
+              "name": "iB",
+              "docs": ""
+            }
+          ],
+          "includes": []
+        },
+        "name": "field1",
+        "docs": "Anonymous nested record type"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": {
+          "editable": false,
+          "codedata": {
+            "node": "UNION"
+          },
+          "properties": {
+            "isArray": {
+              "metadata": {
+                "label": "Is array type",
+                "description": "Is this type an array or list value"
+              },
+              "valueType": "FLAG",
+              "value": "false",
+              "optional": true,
+              "editable": true,
+              "advanced": true
+            },
+            "arraySize": {
+              "metadata": {
+                "label": "Size of the array",
+                "description": "Array dimensions"
+              },
+              "valueType": "STRING",
+              "value": "",
+              "optional": false,
+              "editable": false,
+              "advanced": false
+            }
+          },
+          "members": [
+            {
+              "kind": "TYPE",
+              "refs": [],
+              "type": "xml",
+              "name": "xml"
+            },
+            {
+              "kind": "TYPE",
+              "refs": [
+                "UserAddress"
+              ],
+              "type": "UserAddress",
+              "name": "UserAddress"
+            },
+            {
+              "kind": "TYPE",
+              "refs": [
+                "City"
+              ],
+              "type": "City",
+              "name": "City"
+            }
+          ]
+        },
+        "name": "address",
+        "docs": "Union of of type-refs and a built-in type"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "string",
+        "name": "name",
+        "docs": "Name of the employee"
+      },
+      {
+        "kind": "FIELD",
+        "refs": [],
+        "type": "int",
+        "name": "age",
+        "docs": "Age of the employee"
+      }
+    ],
+    "restMember": {
+      "kind": "FIELD",
+      "refs": [],
+      "type": "anydata"
+    },
+    "includes": []
+  },
+  "output": {
+    "test_pack2/records.bal": [
+      {
+        "range": {
+          "start": {
+            "line": 2,
+            "character": 0
+          },
+          "end": {
+            "line": 13,
+            "character": 2
+          }
+        },
+        "newText": "# User record type\n# Simple record type with docs, anonymous field types (union, record)\ntype User record {|\n\t# Anonymous nested record type\n\trecord {|\n\tCity|UserAddress iA;\n\trecord {|\n\tint iiA;\n|} iB;\n|} field1;\n\t# Union of of type-refs and a built-in type\n\txml|UserAddress|City address;\n\t# Name of the employee\n\tstring name;\n\t# Age of the employee\n\tint age;\n\tanydata ...;\n|};\n"
+      }
+    ]
+  }
+}