From c25585968b920862d03f7a31d0fbb9895dc08e70 Mon Sep 17 00:00:00 2001
From: Kevin Schneider <schneider.kev@outlook.de>
Date: Thu, 25 Aug 2022 19:40:25 +0200
Subject: [PATCH 1/6] WIP codegen

---
 .../ObjectAbstractions/TraceObjects/Bins.cs   |  27 +++
 .../ObjectAbstractions/TraceObjects/Box.cs    |  31 ++++
 .../ObjectAbstractions/TraceObjects/Caps.cs   |  42 +++++
 .../TraceObjects/Contours.cs                  |  95 ++++++++++
 .../TraceObjects/Cumulative.cs                |  27 +++
 .../TraceObjects/Dimensions.cs                |  57 ++++++
 .../ObjectAbstractions/TraceObjects/Error.cs  |  47 +++++
 .../TraceObjects/FinanceMarker.cs             |  29 +++
 .../TraceObjects/FunnelConnector.cs           |  27 +++
 .../TraceObjects/Gradient.cs                  |  27 +++
 .../ObjectAbstractions/TraceObjects/Icicle.cs |  57 ++++++
 .../TraceObjects/Indicator.cs                 | 153 ++++++++++++++++
 .../TraceObjects/Lighting.cs                  |  52 ++++++
 .../ObjectAbstractions/TraceObjects/Marker.cs |  79 ++++++++
 .../TraceObjects/MeanLine.cs                  |  27 +++
 .../TraceObjects/Pathbar.cs                   |  31 ++++
 .../TraceObjects/Pattern.cs                   |  39 ++++
 .../TraceObjects/Projection.cs                |  44 +++++
 .../ObjectAbstractions/TraceObjects/Sankey.cs | 105 +++++++++++
 .../TraceObjects/Selection.cs                 |  61 +++++++
 .../ObjectAbstractions/TraceObjects/Slices.cs |  44 +++++
 .../TraceObjects/SpaceFrame.cs                |  25 +++
 .../TraceObjects/SplomDiagonal.cs             |  25 +++
 .../TraceObjects/StockData.cs                 |  23 +++
 .../TraceObjects/StreamTubeStarts.cs          |  27 +++
 .../TraceObjects/Sunburst.cs                  |  44 +++++
 .../TraceObjects/Surface.cs                   |  29 +++
 .../ObjectAbstractions/TraceObjects/Table.cs  |  73 ++++++++
 .../TraceObjects/Treemap.cs                   |  63 +++++++
 .../TraceObjects/WaterfallConnector.cs        |  27 +++
 .../TraceObjects/traceobject-codegen.fsx      | 170 ++++++++++++++++++
 31 files changed, 1607 insertions(+)
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs
 create mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx

diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs
new file mode 100644
index 000000000..56783f96b
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Bins Bins
+        (
+
+            Optional<double> Start = default,
+            Optional<double> End = default,
+            Optional<double> Size = default
+        ) => 
+            Plotly.NET.TraceObjects.Bins.init(
+
+                Start: Start.ToOption(),
+                End: End.ToOption(),
+                Size: Size.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs
new file mode 100644
index 000000000..8809ab393
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs
@@ -0,0 +1,31 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Box Box
+        (
+
+            Optional<bool> Visible = default,
+            Optional<double> Width = default,
+            Optional<Color> FillColor = default,
+            Optional<Color> LineColor = default,
+            Optional<double> LineWidth = default
+        ) => 
+            Plotly.NET.TraceObjects.Box.init(
+
+                Visible: Visible.ToOption(),
+                Width: Width.ToOption(),
+                FillColor: FillColor.ToOption(),
+                LineColor: LineColor.ToOption(),
+                LineWidth: LineWidth.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs
new file mode 100644
index 000000000..a5b632770
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs
@@ -0,0 +1,42 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.CapFill CapFill
+        (
+
+            Optional<double> Fill = default,
+            Optional<bool> Show = default
+        ) => 
+            Plotly.NET.TraceObjects.CapFill.init(
+
+                Fill: Fill.ToOption(),
+                Show: Show.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Caps Caps
+        (
+
+            Optional<Plotly.NET.TraceObjects.CapFill> X = default,
+            Optional<Plotly.NET.TraceObjects.CapFill> Y = default,
+            Optional<Plotly.NET.TraceObjects.CapFill> Z = default
+        ) => 
+            Plotly.NET.TraceObjects.Caps.init(
+
+                X: X.ToOption(),
+                Y: Y.ToOption(),
+                Z: Z.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs
new file mode 100644
index 000000000..ece02af29
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs
@@ -0,0 +1,95 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.ContourProject ContourProject
+        (
+
+            Optional<bool> X = default,
+            Optional<bool> Y = default,
+            Optional<bool> Z = default
+        ) => 
+            Plotly.NET.TraceObjects.ContourProject.init(
+
+                X: X.ToOption(),
+                Y: Y.ToOption(),
+                Z: Z.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Contour Contour
+        (
+
+            Optional<Color> Color = default,
+            Optional<double> End = default,
+            Optional<bool> Highlight = default,
+            Optional<Color> HighlightColor = default,
+            Optional<double> HighlightWidth = default,
+            Optional<Plotly.NET.TraceObjects.ContourProject> Project = default,
+            Optional<bool> Show = default,
+            Optional<double> Size = default,
+            Optional<double> Start = default,
+            Optional<bool> UseColorMap = default,
+            Optional<double> Width = default
+        ) => 
+            Plotly.NET.TraceObjects.Contour.init(
+
+                Color: Color.ToOption(),
+                End: End.ToOption(),
+                Highlight: Highlight.ToOption(),
+                HighlightColor: HighlightColor.ToOption(),
+                HighlightWidth: HighlightWidth.ToOption(),
+                Project: Project.ToOption(),
+                Show: Show.ToOption(),
+                Size: Size.ToOption(),
+                Start: Start.ToOption(),
+                UseColorMap: UseColorMap.ToOption(),
+                Width: Width.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Contours Contours<ValueType>
+        (
+
+            Optional<StyleParam.ContourColoring> Coloring = default,
+            Optional<double> End = default,
+            Optional<Font> LabelFont = default,
+            Optional<string> LabelFormat = default,
+            Optional<StyleParam.ConstraintOperation> Operation = default,
+            Optional<bool> ShowLabels = default,
+            Optional<bool> ShowLines = default,
+            Optional<double> Size = default,
+            Optional<double> Start = default,
+            Optional<StyleParam.ContourType> Type = default,
+            Optional<ValueType> Value = default
+        ) 
+            where ValueType : IConvertible
+            => 
+            Plotly.NET.TraceObjects.Contours.init(
+
+                Coloring: Coloring.ToOption(),
+                End: End.ToOption(),
+                LabelFont: LabelFont.ToOption(),
+                LabelFormat: LabelFormat.ToOption(),
+                Operation: Operation.ToOption(),
+                ShowLabels: ShowLabels.ToOption(),
+                ShowLines: ShowLines.ToOption(),
+                Size: Size.ToOption(),
+                Start: Start.ToOption(),
+                Type: Type.ToOption(),
+                Value: Value.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs
new file mode 100644
index 000000000..2a7dd309c
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Cumulative Cumulative
+        (
+
+            Optional<bool> Enabled = default,
+            Optional<StyleParam.CumulativeDirection> Direction = default,
+            Optional<StyleParam.Currentbin> Currentbin = default
+        ) => 
+            Plotly.NET.TraceObjects.Cumulative.init(
+
+                Enabled: Enabled.ToOption(),
+                Direction: Direction.ToOption(),
+                Currentbin: Currentbin.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs
new file mode 100644
index 000000000..66b250242
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs
@@ -0,0 +1,57 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Dimension Dimension<LabelType, TextType, ValueType>
+        (
+
+            Optional<StyleParam.Range> ConstraintRange = default,
+            Optional<LabelType> Label = default,
+            Optional<bool> MultiSelect = default,
+            Optional<string> Name = default,
+            Optional<StyleParam.Range> Range = default,
+            Optional<string> TemplateItemName = default,
+            Optional<StyleParam.TickMode> TickFormat = default,
+            Optional<IEnumerable<TextType>> TickText = default,
+            Optional<IEnumerable<ValueType>> Tickvals = default,
+            Optional<IEnumerable<ValueType>> Values = default,
+            Optional<bool> Visible = default,
+            Optional<bool> AxisMatches = default,
+            Optional<StyleParam.AxisType> AxisType = default,
+            Optional<#IConvertible> Label = default,
+            Optional<string> Name = default,
+            Optional<string> TemplateItemName = default,
+            Optional<IEnumerable<#IConvertible>> Values = default,
+            Optional<bool> Visible = default
+        ) => 
+            Plotly.NET.TraceObjects.Dimension.init(
+
+                ConstraintRange: ConstraintRange.ToOption(),
+                Label: Label.ToOption(),
+                MultiSelect: MultiSelect.ToOption(),
+                Name: Name.ToOption(),
+                Range: Range.ToOption(),
+                TemplateItemName: TemplateItemName.ToOption(),
+                TickFormat: TickFormat.ToOption(),
+                TickText: TickText.ToOption(),
+                Tickvals: Tickvals.ToOption(),
+                Values: Values.ToOption(),
+                Visible: Visible.ToOption(),
+                AxisMatches: AxisMatches.ToOption(),
+                AxisType: AxisType.ToOption(),
+                Label: Label.ToOption(),
+                Name: Name.ToOption(),
+                TemplateItemName: TemplateItemName.ToOption(),
+                Values: Values.ToOption(),
+                Visible: Visible.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs
new file mode 100644
index 000000000..27d376363
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs
@@ -0,0 +1,47 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Error Error
+        (
+
+            Optional<bool> Visible = default,
+            Optional<StyleParam.ErrorType> Type = default,
+            Optional<bool> Symmetric = default,
+            Optional<IEnumerable<#IConvertible>> Array = default,
+            Optional<IEnumerable<#IConvertible>> Arrayminus = default,
+            Optional<double> Value = default,
+            Optional<double> Valueminus = default,
+            Optional<int> Traceref = default,
+            Optional<int> Tracerefminus = default,
+            Optional<bool> Copy_ystyle = default,
+            Optional<Color> Color = default,
+            Optional<double> Thickness = default,
+            Optional<double> Width = default
+        ) => 
+            Plotly.NET.TraceObjects.Error.init(
+
+                Visible: Visible.ToOption(),
+                Type: Type.ToOption(),
+                Symmetric: Symmetric.ToOption(),
+                Array: Array.ToOption(),
+                Arrayminus: Arrayminus.ToOption(),
+                Value: Value.ToOption(),
+                Valueminus: Valueminus.ToOption(),
+                Traceref: Traceref.ToOption(),
+                Tracerefminus: Tracerefminus.ToOption(),
+                Copy_ystyle: Copy_ystyle.ToOption(),
+                Color: Color.ToOption(),
+                Thickness: Thickness.ToOption(),
+                Width: Width.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs
new file mode 100644
index 000000000..e2c7a76f6
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs
@@ -0,0 +1,29 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.FinanceMarker FinanceMarker
+        (
+
+            Optional<Color> MarkerColor = default,
+            Optional<Color> LineColor = default,
+            Optional<double> LineWidth = default,
+            Optional<StyleParam.DrawingStyle> LineDash = default
+        ) => 
+            Plotly.NET.TraceObjects.FinanceMarker.init(
+
+                MarkerColor: MarkerColor.ToOption(),
+                LineColor: LineColor.ToOption(),
+                LineWidth: LineWidth.ToOption(),
+                LineDash: LineDash.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs
new file mode 100644
index 000000000..8c3a9e429
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.FunnelConnector FunnelConnector
+        (
+
+            Optional<Color> FillColor = default,
+            Optional<Line> Line = default,
+            Optional<bool> Visible = default
+        ) => 
+            Plotly.NET.TraceObjects.FunnelConnector.init(
+
+                FillColor: FillColor.ToOption(),
+                Line: Line.ToOption(),
+                Visible: Visible.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs
new file mode 100644
index 000000000..debed6d6e
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Gradient Gradient
+        (
+
+            Optional<Color> Color = default,
+            Optional<StyleParam.GradientType> Type = default,
+            Optional<IEnumerable<StyleParam.GradientType>> MultiTypes = default
+        ) => 
+            Plotly.NET.TraceObjects.Gradient.init(
+
+                Color: Color.ToOption(),
+                Type: Type.ToOption(),
+                MultiTypes: MultiTypes.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs
new file mode 100644
index 000000000..05622da35
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs
@@ -0,0 +1,57 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IcicleRoot IcicleRoot
+        (
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.IcicleRoot.init(
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IcicleLeaf IcicleLeaf
+        (
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.IcicleLeaf.init(
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IcicleTiling IcicleTiling
+        (
+
+            Optional<StyleParam.TilingFlip> Flip = default,
+            Optional<StyleParam.Orientation> Orientation = default,
+            Optional<int> Pad = default
+        ) => 
+            Plotly.NET.TraceObjects.IcicleTiling.init(
+
+                Flip: Flip.ToOption(),
+                Orientation: Orientation.ToOption(),
+                Pad: Pad.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs
new file mode 100644
index 000000000..b862ddbfe
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs
@@ -0,0 +1,153 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorSymbol IndicatorSymbol
+        (
+
+            Optional<Color> Color = default,
+            Optional<string> Symbol = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorSymbol.init(
+
+                Color: Color.ToOption(),
+                Symbol: Symbol.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorDelta IndicatorDelta
+        (
+
+            Optional<IndicatorSymbol> Decreasing = default,
+            Optional<Font> Font = default,
+            Optional<IndicatorSymbol> Increasing = default,
+            Optional<StyleParam.IndicatorDeltaPosition> Position = default,
+            Optional<#IConvertible> Reference = default,
+            Optional<bool> Relative = default,
+            Optional<string> ValueFormat = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorDelta.init(
+
+                Decreasing: Decreasing.ToOption(),
+                Font: Font.ToOption(),
+                Increasing: Increasing.ToOption(),
+                Position: Position.ToOption(),
+                Reference: Reference.ToOption(),
+                Relative: Relative.ToOption(),
+                ValueFormat: ValueFormat.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorNumber IndicatorNumber
+        (
+
+            Optional<Font> Font = default,
+            Optional<string> Prefix = default,
+            Optional<string> Suffix = default,
+            Optional<string> ValueFormat = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorNumber.init(
+
+                Font: Font.ToOption(),
+                Prefix: Prefix.ToOption(),
+                Suffix: Suffix.ToOption(),
+                ValueFormat: ValueFormat.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorBar IndicatorBar
+        (
+
+            Optional<Color> Color = default,
+            Optional<Line> Line = default,
+            Optional<double> Thickness = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorBar.init(
+
+                Color: Color.ToOption(),
+                Line: Line.ToOption(),
+                Thickness: Thickness.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorStep IndicatorStep
+        (
+
+            Optional<Color> Color = default,
+            Optional<Line> Line = default,
+            Optional<string> Name = default,
+            Optional<StyleParam.Range> Range = default,
+            Optional<string> TemplateItemName = default,
+            Optional<double> Thickness = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorStep.init(
+
+                Color: Color.ToOption(),
+                Line: Line.ToOption(),
+                Name: Name.ToOption(),
+                Range: Range.ToOption(),
+                TemplateItemName: TemplateItemName.ToOption(),
+                Thickness: Thickness.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorThreshold IndicatorThreshold
+        (
+
+            Optional<Line> Line = default,
+            Optional<double> Thickness = default,
+            Optional<#IConvertible> Value = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorThreshold.init(
+
+                Line: Line.ToOption(),
+                Thickness: Thickness.ToOption(),
+                Value: Value.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.IndicatorGauge IndicatorGauge
+        (
+
+            Optional<LinearAxis> Axis = default,
+            Optional<IndicatorBar> Bar = default,
+            Optional<Color> BGColor = default,
+            Optional<Color> BorderColor = default,
+            Optional<int> BorderWidth = default,
+            Optional<StyleParam.IndicatorGaugeShape> Shape = default,
+            Optional<IEnumerable<IndicatorStep>> Steps = default,
+            Optional<IndicatorThreshold> Threshold = default
+        ) => 
+            Plotly.NET.TraceObjects.IndicatorGauge.init(
+
+                Axis: Axis.ToOption(),
+                Bar: Bar.ToOption(),
+                BGColor: BGColor.ToOption(),
+                BorderColor: BorderColor.ToOption(),
+                BorderWidth: BorderWidth.ToOption(),
+                Shape: Shape.ToOption(),
+                Steps: Steps.ToOption(),
+                Threshold: Threshold.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs
new file mode 100644
index 000000000..62eaacc65
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs
@@ -0,0 +1,52 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Lighting Lighting
+        (
+
+            Optional<double> Ambient = default,
+            Optional<double> Diffuse = default,
+            Optional<double> FaceNormalEpsilon = default,
+            Optional<double> Fresnel = default,
+            Optional<double> Roughness = default,
+            Optional<double> Specular = default,
+            Optional<double> VertexNormalEpsilon = default
+        ) => 
+            Plotly.NET.TraceObjects.Lighting.init(
+
+                Ambient: Ambient.ToOption(),
+                Diffuse: Diffuse.ToOption(),
+                FaceNormalEpsilon: FaceNormalEpsilon.ToOption(),
+                Fresnel: Fresnel.ToOption(),
+                Roughness: Roughness.ToOption(),
+                Specular: Specular.ToOption(),
+                VertexNormalEpsilon: VertexNormalEpsilon.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.LightPosition LightPosition
+        (
+
+            Optional<double> X = default,
+            Optional<double> Y = default,
+            Optional<double> Z = default
+        ) => 
+            Plotly.NET.TraceObjects.LightPosition.init(
+
+                X: X.ToOption(),
+                Y: Y.ToOption(),
+                Z: Z.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs
new file mode 100644
index 000000000..a5ceddc5e
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs
@@ -0,0 +1,79 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Marker Marker
+        (
+
+            Optional<bool> AutoColorScale = default,
+            Optional<bool> CAuto = default,
+            Optional<double> CMax = default,
+            Optional<double> CMid = default,
+            Optional<double> CMin = default,
+            Optional<Color> Color = default,
+            Optional<IEnumerable<Color>> Colors = default,
+            Optional<StyleParam.SubPlotId> ColorAxis = default,
+            Optional<ColorBar> ColorBar = default,
+            Optional<StyleParam.Colorscale> Colorscale = default,
+            Optional<Gradient> Gradient = default,
+            Optional<Line> Outline = default,
+            Optional<int> MaxDisplayed = default,
+            Optional<double> Opacity = default,
+            Optional<IEnumerable<double>> MultiOpacity = default,
+            Optional<Pattern> Pattern = default,
+            Optional<bool> ReverseScale = default,
+            Optional<bool> ShowScale = default,
+            Optional<int> Size = default,
+            Optional<IEnumerable<int>> MultiSize = default,
+            Optional<int> SizeMin = default,
+            Optional<StyleParam.MarkerSizeMode> SizeMode = default,
+            Optional<int> SizeRef = default,
+            Optional<StyleParam.MarkerSymbol> Symbol = default,
+            Optional<IEnumerable<StyleParam.MarkerSymbol>> MultiSymbol = default,
+            Optional<StyleParam.MarkerSymbol3D> Symbol3D = default,
+            Optional<IEnumerable<StyleParam.MarkerSymbol3D>> MultiSymbol3D = default,
+            Optional<Color> OutlierColor = default,
+            Optional<int> OutlierWidth = default
+        ) => 
+            Plotly.NET.TraceObjects.Marker.init(
+
+                AutoColorScale: AutoColorScale.ToOption(),
+                CAuto: CAuto.ToOption(),
+                CMax: CMax.ToOption(),
+                CMid: CMid.ToOption(),
+                CMin: CMin.ToOption(),
+                Color: Color.ToOption(),
+                Colors: Colors.ToOption(),
+                ColorAxis: ColorAxis.ToOption(),
+                ColorBar: ColorBar.ToOption(),
+                Colorscale: Colorscale.ToOption(),
+                Gradient: Gradient.ToOption(),
+                Outline: Outline.ToOption(),
+                MaxDisplayed: MaxDisplayed.ToOption(),
+                Opacity: Opacity.ToOption(),
+                MultiOpacity: MultiOpacity.ToOption(),
+                Pattern: Pattern.ToOption(),
+                ReverseScale: ReverseScale.ToOption(),
+                ShowScale: ShowScale.ToOption(),
+                Size: Size.ToOption(),
+                MultiSize: MultiSize.ToOption(),
+                SizeMin: SizeMin.ToOption(),
+                SizeMode: SizeMode.ToOption(),
+                SizeRef: SizeRef.ToOption(),
+                Symbol: Symbol.ToOption(),
+                MultiSymbol: MultiSymbol.ToOption(),
+                Symbol3D: Symbol3D.ToOption(),
+                MultiSymbol3D: MultiSymbol3D.ToOption(),
+                OutlierColor: OutlierColor.ToOption(),
+                OutlierWidth: OutlierWidth.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs
new file mode 100644
index 000000000..3367aa068
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.MeanLine MeanLine
+        (
+
+            Optional<bool> Visible = default,
+            Optional<Color> Color = default,
+            Optional<double> Width = default
+        ) => 
+            Plotly.NET.TraceObjects.MeanLine.init(
+
+                Visible: Visible.ToOption(),
+                Color: Color.ToOption(),
+                Width: Width.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs
new file mode 100644
index 000000000..a696e4867
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs
@@ -0,0 +1,31 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Pathbar Pathbar
+        (
+
+            Optional<bool> Visible = default,
+            Optional<StyleParam.Side> Side = default,
+            Optional<StyleParam.PathbarEdgeShape> EdgeShape = default,
+            Optional<double> Thickness = default,
+            Optional<Font> Textfont = default
+        ) => 
+            Plotly.NET.TraceObjects.Pathbar.init(
+
+                Visible: Visible.ToOption(),
+                Side: Side.ToOption(),
+                EdgeShape: EdgeShape.ToOption(),
+                Thickness: Thickness.ToOption(),
+                Textfont: Textfont.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs
new file mode 100644
index 000000000..f04c2dcc1
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs
@@ -0,0 +1,39 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Pattern Pattern
+        (
+
+            Optional<Color> BGColor = default,
+            Optional<Color> FGColor = default,
+            Optional<double> FGOpacity = default,
+            Optional<StyleParam.PatternFillMode> FillMode = default,
+            Optional<StyleParam.PatternShape> Shape = default,
+            Optional<IEnumerable<StyleParam.PatternShape>> MultiShape = default,
+            Optional<int> Size = default,
+            Optional<IEnumerable<int>> MultiSize = default,
+            Optional<double> Solidity = default
+        ) => 
+            Plotly.NET.TraceObjects.Pattern.init(
+
+                BGColor: BGColor.ToOption(),
+                FGColor: FGColor.ToOption(),
+                FGOpacity: FGOpacity.ToOption(),
+                FillMode: FillMode.ToOption(),
+                Shape: Shape.ToOption(),
+                MultiShape: MultiShape.ToOption(),
+                Size: Size.ToOption(),
+                MultiSize: MultiSize.ToOption(),
+                Solidity: Solidity.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs
new file mode 100644
index 000000000..33853253b
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs
@@ -0,0 +1,44 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.ProjectionDimension ProjectionDimension
+        (
+
+            Optional<double> Opacity = default,
+            Optional<double> Scale = default,
+            Optional<bool> Show = default
+        ) => 
+            Plotly.NET.TraceObjects.ProjectionDimension.init(
+
+                Opacity: Opacity.ToOption(),
+                Scale: Scale.ToOption(),
+                Show: Show.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Projection Projection
+        (
+
+            Optional<ProjectionDimension> X = default,
+            Optional<ProjectionDimension> Y = default,
+            Optional<ProjectionDimension> Z = default
+        ) => 
+            Plotly.NET.TraceObjects.Projection.init(
+
+                X: X.ToOption(),
+                Y: Y.ToOption(),
+                Z: Z.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs
new file mode 100644
index 000000000..548471c68
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs
@@ -0,0 +1,105 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SankeyNodes SankeyNodes
+        (
+
+            Optional<Color> Color = default,
+            Optional<IEnumerable<#IConvertible>> CustomData = default,
+            Optional<IEnumerable<#IEnumerable<int>>> Groups = default,
+            Optional<StyleParam.HoverInfo> HoverInfo = default,
+            Optional<Hoverlabel> HoverLabel = default,
+            Optional<string> HoverTemplate = default,
+            Optional<IEnumerable<string>> MultiHoverTemplate = default,
+            Optional<IEnumerable<string>> Label = default,
+            Optional<Line> Line = default,
+            Optional<int> Pad = default,
+            Optional<int> Thickness = default,
+            Optional<IEnumerable<#IConvertible>> X = default,
+            Optional<IEnumerable<#IConvertible>> Y = default
+        ) => 
+            Plotly.NET.TraceObjects.SankeyNodes.init(
+
+                Color: Color.ToOption(),
+                CustomData: CustomData.ToOption(),
+                Groups: Groups.ToOption(),
+                HoverInfo: HoverInfo.ToOption(),
+                HoverLabel: HoverLabel.ToOption(),
+                HoverTemplate: HoverTemplate.ToOption(),
+                MultiHoverTemplate: MultiHoverTemplate.ToOption(),
+                Label: Label.ToOption(),
+                Line: Line.ToOption(),
+                Pad: Pad.ToOption(),
+                Thickness: Thickness.ToOption(),
+                X: X.ToOption(),
+                Y: Y.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SankeyLinkColorscale SankeyLinkColorscale
+        (
+
+            Optional<double> CMax = default,
+            Optional<double> CMin = default,
+            Optional<StyleParam.Colorscale> ColorScale = default,
+            Optional<string> Label = default,
+            Optional<string> Name = default,
+            Optional<string> TemplateItemName = default
+        ) => 
+            Plotly.NET.TraceObjects.SankeyLinkColorscale.init(
+
+                CMax: CMax.ToOption(),
+                CMin: CMin.ToOption(),
+                ColorScale: ColorScale.ToOption(),
+                Label: Label.ToOption(),
+                Name: Name.ToOption(),
+                TemplateItemName: TemplateItemName.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SankeyLinks SankeyLinks
+        (
+
+            Optional<Color> Color = default,
+            Optional<IEnumerable<SankeyLinkColorscale>> ColorScales = default,
+            Optional<IEnumerable<#IConvertible>> CustomData = default,
+            Optional<StyleParam.HoverInfo> HoverInfo = default,
+            Optional<Hoverlabel> HoverLabel = default,
+            Optional<string> HoverTemplate = default,
+            Optional<IEnumerable<string>> MultiHoverTemplate = default,
+            Optional<IEnumerable<string>> Label = default,
+            Optional<Line> Line = default,
+            Optional<IEnumerable<int>> Source = default,
+            Optional<IEnumerable<int>> Target = default,
+            Optional<IEnumerable<#IConvertible>> Value = default
+        ) => 
+            Plotly.NET.TraceObjects.SankeyLinks.init(
+
+                Color: Color.ToOption(),
+                ColorScales: ColorScales.ToOption(),
+                CustomData: CustomData.ToOption(),
+                HoverInfo: HoverInfo.ToOption(),
+                HoverLabel: HoverLabel.ToOption(),
+                HoverTemplate: HoverTemplate.ToOption(),
+                MultiHoverTemplate: MultiHoverTemplate.ToOption(),
+                Label: Label.ToOption(),
+                Line: Line.ToOption(),
+                Source: Source.ToOption(),
+                Target: Target.ToOption(),
+                Value: Value.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs
new file mode 100644
index 000000000..8b70443aa
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs
@@ -0,0 +1,61 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.MarkerSelectionStyle MarkerSelectionStyle
+        (
+
+            Optional<double> Opacity = default,
+            Optional<Color> Color = default,
+            Optional<double> Size = default
+        ) => 
+            Plotly.NET.TraceObjects.MarkerSelectionStyle.init(
+
+                Opacity: Opacity.ToOption(),
+                Color: Color.ToOption(),
+                Size: Size.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.FontSelectionStyle FontSelectionStyle
+        (
+             ,
+             ,
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.FontSelectionStyle.init(
+                : ,
+                : ,
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Selection Selection
+        (
+
+            Optional<MarkerSelectionStyle> MarkerSelectionStyle = default,
+            Optional<FontSelectionStyle> FontSelectionStyle = default
+        ) => 
+            Plotly.NET.TraceObjects.Selection.init(
+
+                MarkerSelectionStyle: MarkerSelectionStyle.ToOption(),
+                FontSelectionStyle: FontSelectionStyle.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs
new file mode 100644
index 000000000..85a2df01c
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs
@@ -0,0 +1,44 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SlicesFill SlicesFill
+        (
+
+            Optional<double> Fill = default,
+            Optional<IEnumerable<#IConvertible>> Locations = default,
+            Optional<bool> Show = default
+        ) => 
+            Plotly.NET.TraceObjects.SlicesFill.init(
+
+                Fill: Fill.ToOption(),
+                Locations: Locations.ToOption(),
+                Show: Show.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Slices Slices
+        (
+
+            Optional<SlicesFill> X = default,
+            Optional<SlicesFill> Y = default,
+            Optional<SlicesFill> Z = default
+        ) => 
+            Plotly.NET.TraceObjects.Slices.init(
+
+                X: X.ToOption(),
+                Y: Y.ToOption(),
+                Z: Z.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs
new file mode 100644
index 000000000..de830f42b
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs
@@ -0,0 +1,25 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Spaceframe Spaceframe
+        (
+
+            Optional<double> Fill = default,
+            Optional<bool> Show = default
+        ) => 
+            Plotly.NET.TraceObjects.Spaceframe.init(
+
+                Fill: Fill.ToOption(),
+                Show: Show.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs
new file mode 100644
index 000000000..615061945
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs
@@ -0,0 +1,25 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SplomDiagonal SplomDiagonal
+        (
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.SplomDiagonal.init(
+                : ,
+                : 
+
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs
new file mode 100644
index 000000000..a9212c44d
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs
@@ -0,0 +1,23 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.StockData StockData
+        (
+
+
+        ) => 
+            Plotly.NET.TraceObjects.StockData.init(
+
+
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs
new file mode 100644
index 000000000..d4d8bd51c
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.StreamTubeStarts StreamTubeStarts
+        (
+
+            Optional<IEnumerable<#IConvertible>> X = default,
+            Optional<IEnumerable<#IConvertible>> Y = default,
+            Optional<IEnumerable<#IConvertible>> Z = default
+        ) => 
+            Plotly.NET.TraceObjects.StreamTubeStarts.init(
+
+                X: X.ToOption(),
+                Y: Y.ToOption(),
+                Z: Z.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs
new file mode 100644
index 000000000..b9701ed44
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs
@@ -0,0 +1,44 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SunburstRoot SunburstRoot
+        (
+             ,
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.SunburstRoot.init(
+                : ,
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.SunburstLeaf SunburstLeaf
+        (
+             ,
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.SunburstLeaf.init(
+                : ,
+                : ,
+                : 
+
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs
new file mode 100644
index 000000000..33fcacebd
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs
@@ -0,0 +1,29 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.Surface Surface
+        (
+
+            Optional<int> Count = default,
+            Optional<double> Fill = default,
+            Optional<StyleParam.SurfacePattern> Pattern = default,
+            Optional<bool> Show = default
+        ) => 
+            Plotly.NET.TraceObjects.Surface.init(
+
+                Count: Count.ToOption(),
+                Fill: Fill.ToOption(),
+                Pattern: Pattern.ToOption(),
+                Show: Show.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
new file mode 100644
index 000000000..f4c63bd91
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
@@ -0,0 +1,73 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.TableFill TableFill
+        (
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.TableFill.init(
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.TableCells TableCells
+        (
+
+            Optional<StyleParam.HorizontalAlign> Align = default,
+            Optional<IEnumerable<StyleParam.HorizontalAlign>> MultiAlign = default,
+            Optional<TableFill> Fill = default,
+            Optional<Font> Font = default,
+            Optional<IEnumerable<string>> Format = default,
+            Optional<int> Height = default,
+            Optional<Line> Line = default,
+            Optional<string> Prefix = default,
+            Optional<IEnumerable<string>> MultiPrefix = default,
+            Optional<string> Suffix = default,
+            Optional<IEnumerable<string>> MultiSuffix = default,
+            Optional<IEnumerable<#IEnumerable<#IConvertible>>> Values = default
+        ) => 
+            Plotly.NET.TraceObjects.TableCells.init(
+
+                Align: Align.ToOption(),
+                MultiAlign: MultiAlign.ToOption(),
+                Fill: Fill.ToOption(),
+                Font: Font.ToOption(),
+                Format: Format.ToOption(),
+                Height: Height.ToOption(),
+                Line: Line.ToOption(),
+                Prefix: Prefix.ToOption(),
+                MultiPrefix: MultiPrefix.ToOption(),
+                Suffix: Suffix.ToOption(),
+                MultiSuffix: MultiSuffix.ToOption(),
+                Values: Values.ToOption()
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.TableHeader TableHeader
+        (
+
+
+        ) => 
+            Plotly.NET.TraceObjects.TableHeader.init(
+
+
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs
new file mode 100644
index 000000000..54973d60b
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs
@@ -0,0 +1,63 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.TreemapRoot TreemapRoot
+        (
+             ,
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.TreemapRoot.init(
+                : ,
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.TreemapLeaf TreemapLeaf
+        (
+             ,
+             ,
+             
+
+        ) => 
+            Plotly.NET.TraceObjects.TreemapLeaf.init(
+                : ,
+                : ,
+                : 
+
+            );
+}
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.TreemapTiling TreemapTiling
+        (
+
+            Optional<StyleParam.TreemapTilingPacking> Packing = default,
+            Optional<double> SquarifyRatio = default,
+            Optional<StyleParam.TilingFlip> Flip = default,
+            Optional<double> Pad = default
+        ) => 
+            Plotly.NET.TraceObjects.TreemapTiling.init(
+
+                Packing: Packing.ToOption(),
+                SquarifyRatio: SquarifyRatio.ToOption(),
+                Flip: Flip.ToOption(),
+                Pad: Pad.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs
new file mode 100644
index 000000000..0e2024e97
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs
@@ -0,0 +1,27 @@
+
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.WaterfallConnector WaterfallConnector
+        (
+
+            Optional<Line> Line = default,
+            Optional<bool> Visible = default,
+            Optional<StyleParam.ConnectorMode> ConnectorMode = default
+        ) => 
+            Plotly.NET.TraceObjects.WaterfallConnector.init(
+
+                Line: Line.ToOption(),
+                Visible: Visible.ToOption(),
+                ConnectorMode: ConnectorMode.ToOption()
+            );
+}
+
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
new file mode 100644
index 000000000..cdb3693c9
--- /dev/null
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
@@ -0,0 +1,170 @@
+open System.IO
+open System.Text
+open System.Text.RegularExpressions
+
+type TraceObjectAbstraction = {
+    ObjectName: string
+    MandatoryParams: (string*string) list
+    OptionalParams: (string*string) list
+} with
+    static member create name m o = 
+        {
+            ObjectName = name
+            MandatoryParams = m
+            OptionalParams = o
+        }
+
+let objectNameRegex = new Regex("type (?<objectName>[A-Za-z]*)()")
+
+let getObjectName (str:string) =
+    let m = objectNameRegex.Match(str)
+    m.Groups.Item("objectName").Value
+
+let paramRegex = new Regex("(?<pName>\S*):\s*(?<pType>[^,]*)")
+
+let getParam (str:string) =
+    let m = paramRegex.Match(str)
+    m.Groups.Item("pName").Value,
+    m.Groups.Item("pType").Value
+    
+let optParamRegex = new Regex("\?(?<pName>\S*):\s*(?<pType>[^,]*)")
+
+let getOptParam (str:string) =
+    let m = optParamRegex.Match(str)
+    m.Groups.Item("pName").Value,
+    m.Groups.Item("pType").Value
+
+let parseSourceFile (path:string) =
+    let rec loop (lines: string list) (isFirstObj: bool) (isInit: bool) (currentName: string) (mParams: (string*string) list) (oParams: (string*string) list) (acc: TraceObjectAbstraction list) =
+        match lines with
+        | line::rest ->
+            match line with
+            | objectName when line.StartsWith("type") ->
+                let name = getObjectName objectName
+                if isFirstObj then 
+                    loop rest false isInit name mParams oParams acc
+                else
+                    loop rest isFirstObj isInit name [] [] ((TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams)) :: acc)
+            
+            | init when init.Trim().StartsWith("static member init") ->
+                printfn "is init"
+                loop rest isFirstObj true currentName mParams oParams acc
+            
+            | otherMember when otherMember.Trim().StartsWith("static member") ->
+                printfn "is other member"
+                loop rest isFirstObj false currentName mParams oParams acc
+                
+            | bodyStart when 
+                bodyStart.Trim().StartsWith("(") ->
+                printfn "is body start"
+                loop rest isFirstObj isInit currentName mParams oParams acc
+
+            | bodyEnd when 
+                bodyEnd.Trim().StartsWith(") =") ->
+                printfn "is body end"
+                loop rest isFirstObj false currentName mParams oParams acc
+
+            | optParam when isInit && optParam.Trim().StartsWith("[<Optional; DefaultParameterValue(") ->
+                printfn "is opt param"
+                loop rest isFirstObj isInit currentName mParams ((getOptParam optParam) :: oParams) acc
+
+            | param when isInit ->
+
+                printfn "is param"
+                loop rest isFirstObj isInit currentName ((getParam param) :: mParams)  oParams acc
+            
+            | _ -> loop rest isFirstObj isInit currentName mParams oParams acc
+
+        | [] -> (TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams))::acc |> List.rev
+
+    loop (File.ReadAllLines path |> List.ofArray) true false "" [] [] []
+
+let class_template = """public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.[OBJECT_NAME] [OBJECT_NAME]
+        (
+[MANDATORY_PARAMS]
+[OPTIONAL_PARAMS]
+        ) => 
+            Plotly.NET.TraceObjects.[OBJECT_NAME].init(
+[MANDATORY_PARAMS_SETTERS]
+[OPTIONAL_PARAMS_SETTERS]
+            );
+}
+"""
+
+let mapFSharpType (typeName:string) =
+    typeName
+        .Replace("float","double")
+        .Replace("seq","IEnumerable")
+
+let populateClassTemplate (tObj: TraceObjectAbstraction) =
+
+    let mParams =
+        tObj.MandatoryParams
+        |> List.map (fun (pName, pType) -> $"            {mapFSharpType pType} {pName}")
+        |> String.concat $",{System.Environment.NewLine}"    
+
+    let mParamSetters =
+        tObj.MandatoryParams
+        |> List.map (fun (pName, _) -> $"                {pName}: {pName}")
+        |> String.concat $",{System.Environment.NewLine}"    
+
+    let optParams =
+        tObj.OptionalParams
+        |> List.map (fun (pName, pType) -> $"            Optional<{mapFSharpType pType}> {pName} = default")
+        |> String.concat $",{System.Environment.NewLine}"
+
+    let optParamsSetters =
+        tObj.OptionalParams
+        |> List.map (fun (pName, pType) -> $"                {pName}: {pName}.ToOption()")
+        |> String.concat $",{System.Environment.NewLine}"
+
+    class_template
+        .Replace("[OBJECT_NAME]",tObj.ObjectName)
+        .Replace("[MANDATORY_PARAMS]",mParams)
+        .Replace("[OPTIONAL_PARAMS]",optParams)
+        .Replace("[MANDATORY_PARAMS_SETTERS]",mParamSetters)
+        .Replace("[OPTIONAL_PARAMS_SETTERS]",optParamsSetters)
+
+let file_template = """
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+[CLASSES]
+"""
+
+let createCSharpSourceFile (objectAbstractions: TraceObjectAbstraction list) =
+    let classes = 
+        objectAbstractions 
+        |> List.map populateClassTemplate 
+        |> String.concat System.Environment.NewLine
+    
+    file_template.Replace("[CLASSES]",classes)
+
+let indicator = parseSourceFile @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\Indicator.fs"
+
+let sourceFiles =
+    Directory.EnumerateFiles @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\"
+    |> Seq.cast<string>
+    |> Array.ofSeq
+
+let targetFiles = 
+    sourceFiles
+    |> Array.map (fun path -> 
+        path
+            .Replace(@"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\", @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET.CSharp\ObjectAbstractions\TraceObjects\")
+            .Replace(".fs", ".cs")
+    )
+Array.zip sourceFiles targetFiles
+|> Array.iter (fun (source, target) ->
+    let classes = parseSourceFile source
+    let targetFile = createCSharpSourceFile classes
+    File.WriteAllText(target, targetFile)
+)
\ No newline at end of file

From f0e19d57d0c9374ab6606dedf75564f0089c1f1d Mon Sep 17 00:00:00 2001
From: Kevin Schneider <schneider.kev@outlook.de>
Date: Fri, 26 Aug 2022 15:43:24 +0200
Subject: [PATCH 2/6] Finish trace object bindings (codegen with some curation)

---
 .../ObjectAbstractions/TraceObjects/Bins.cs   |  17 +-
 .../ObjectAbstractions/TraceObjects/Box.cs    |  21 ++-
 .../ObjectAbstractions/TraceObjects/Caps.cs   |  35 ++--
 .../TraceObjects/Contours.cs                  |  79 ++++-----
 .../TraceObjects/Cumulative.cs                |  17 +-
 .../TraceObjects/Dimensions.cs                |  63 ++++---
 .../ObjectAbstractions/TraceObjects/Error.cs  |  43 ++---
 .../TraceObjects/FinanceMarker.cs             |  19 +-
 .../TraceObjects/FunnelConnector.cs           |  16 +-
 .../TraceObjects/Gradient.cs                  |  17 +-
 .../ObjectAbstractions/TraceObjects/Icicle.cs |  50 +++---
 .../TraceObjects/Indicator.cs                 | 166 ++++++++---------
 .../TraceObjects/Lighting.cs                  |  36 ++--
 .../ObjectAbstractions/TraceObjects/Marker.cs |  73 ++++----
 .../TraceObjects/MeanLine.cs                  |  17 +-
 .../TraceObjects/Pathbar.cs                   |  21 ++-
 .../TraceObjects/Pattern.cs                   |  29 ++-
 .../TraceObjects/Projection.cs                |  44 ++---
 .../ObjectAbstractions/TraceObjects/Sankey.cs | 126 +++++++------
 .../TraceObjects/Selection.cs                 |  65 +++----
 .../ObjectAbstractions/TraceObjects/Slices.cs |  47 +++--
 .../TraceObjects/SpaceFrame.cs                |  15 +-
 .../TraceObjects/SplomDiagonal.cs             |  17 +-
 .../TraceObjects/StockData.cs                 |  23 ---
 .../TraceObjects/StreamTubeStarts.cs          |  26 +--
 .../TraceObjects/Sunburst.cs                  |  42 ++---
 .../TraceObjects/Surface.cs                   |  19 +-
 .../ObjectAbstractions/TraceObjects/Table.cs  |  74 +++-----
 .../TraceObjects/Treemap.cs                   |  65 +++----
 .../TraceObjects/WaterfallConnector.cs        |  17 +-
 .../TraceObjects/traceobject-codegen.fsx      | 167 ++++++++++++------
 31 files changed, 683 insertions(+), 783 deletions(-)
 delete mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs

diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs
index 56783f96b..3b87d3cef 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Bins.cs
@@ -10,18 +10,17 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Bins Bins
+    public static Plotly.NET.TraceObjects.Bins InitBins
         (
-
             Optional<double> Start = default,
             Optional<double> End = default,
             Optional<double> Size = default
-        ) => 
-            Plotly.NET.TraceObjects.Bins.init(
-
-                Start: Start.ToOption(),
-                End: End.ToOption(),
-                Size: Size.ToOption()
-            );
+        ) 
+            => 
+                Plotly.NET.TraceObjects.Bins.init(
+                    Start: Start.ToOption(),
+                    End: End.ToOption(),
+                    Size: Size.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs
index 8809ab393..7eb1fb8ca 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Box.cs
@@ -10,22 +10,21 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Box Box
+    public static Plotly.NET.TraceObjects.Box InitBox
         (
-
             Optional<bool> Visible = default,
             Optional<double> Width = default,
             Optional<Color> FillColor = default,
             Optional<Color> LineColor = default,
             Optional<double> LineWidth = default
-        ) => 
-            Plotly.NET.TraceObjects.Box.init(
-
-                Visible: Visible.ToOption(),
-                Width: Width.ToOption(),
-                FillColor: FillColor.ToOption(),
-                LineColor: LineColor.ToOption(),
-                LineWidth: LineWidth.ToOption()
-            );
+        ) 
+            => 
+                Plotly.NET.TraceObjects.Box.init(
+                    Visible: Visible.ToOption(),
+                    Width: Width.ToOption(),
+                    FillColor: FillColor.ToOption(),
+                    LineColor: LineColor.ToOption(),
+                    LineWidth: LineWidth.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs
index a5b632770..be64cd6f7 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Caps.cs
@@ -10,33 +10,30 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.CapFill CapFill
+    public static Plotly.NET.TraceObjects.CapFill InitCapFill
         (
-
             Optional<double> Fill = default,
             Optional<bool> Show = default
-        ) => 
-            Plotly.NET.TraceObjects.CapFill.init(
+        ) 
+            =>
+                Plotly.NET.TraceObjects.CapFill.init(
 
-                Fill: Fill.ToOption(),
-                Show: Show.ToOption()
-            );
-}
+                    Fill: Fill.ToOption(),
+                    Show: Show.ToOption()
+                );
 
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.Caps Caps
+    public static Plotly.NET.TraceObjects.Caps InitCaps
         (
-
             Optional<Plotly.NET.TraceObjects.CapFill> X = default,
             Optional<Plotly.NET.TraceObjects.CapFill> Y = default,
             Optional<Plotly.NET.TraceObjects.CapFill> Z = default
-        ) => 
-            Plotly.NET.TraceObjects.Caps.init(
-
-                X: X.ToOption(),
-                Y: Y.ToOption(),
-                Z: Z.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Caps.init(
+
+                    X: X.ToOption(),
+                    Y: Y.ToOption(),
+                    Z: Z.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs
index ece02af29..e23120f76 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Contours.cs
@@ -10,26 +10,24 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.ContourProject ContourProject
+    public static Plotly.NET.TraceObjects.ContourProject InitContourProject
         (
 
             Optional<bool> X = default,
             Optional<bool> Y = default,
             Optional<bool> Z = default
-        ) => 
+        ) 
+
+            =>
             Plotly.NET.TraceObjects.ContourProject.init(
 
                 X: X.ToOption(),
                 Y: Y.ToOption(),
                 Z: Z.ToOption()
             );
-}
 
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.Contour Contour
+    public static Plotly.NET.TraceObjects.Contour InitContour
         (
-
             Optional<Color> Color = default,
             Optional<double> End = default,
             Optional<bool> Highlight = default,
@@ -41,28 +39,24 @@ public static Plotly.NET.TraceObjects.Contour Contour
             Optional<double> Start = default,
             Optional<bool> UseColorMap = default,
             Optional<double> Width = default
-        ) => 
-            Plotly.NET.TraceObjects.Contour.init(
-
-                Color: Color.ToOption(),
-                End: End.ToOption(),
-                Highlight: Highlight.ToOption(),
-                HighlightColor: HighlightColor.ToOption(),
-                HighlightWidth: HighlightWidth.ToOption(),
-                Project: Project.ToOption(),
-                Show: Show.ToOption(),
-                Size: Size.ToOption(),
-                Start: Start.ToOption(),
-                UseColorMap: UseColorMap.ToOption(),
-                Width: Width.ToOption()
-            );
-}
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Contour.init(
+                    Color: Color.ToOption(),
+                    End: End.ToOption(),
+                    Highlight: Highlight.ToOption(),
+                    HighlightColor: HighlightColor.ToOption(),
+                    HighlightWidth: HighlightWidth.ToOption(),
+                    Project: Project.ToOption(),
+                    Show: Show.ToOption(),
+                    Size: Size.ToOption(),
+                    Start: Start.ToOption(),
+                    UseColorMap: UseColorMap.ToOption(),
+                    Width: Width.ToOption()
+                );
 
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.Contours Contours<ValueType>
+    public static Plotly.NET.TraceObjects.Contours InitContours<ValueType>
         (
-
             Optional<StyleParam.ContourColoring> Coloring = default,
             Optional<double> End = default,
             Optional<Font> LabelFont = default,
@@ -75,21 +69,20 @@ public static Plotly.NET.TraceObjects.Contours Contours<ValueType>
             Optional<StyleParam.ContourType> Type = default,
             Optional<ValueType> Value = default
         ) 
-            where ValueType : IConvertible
-            => 
-            Plotly.NET.TraceObjects.Contours.init(
-
-                Coloring: Coloring.ToOption(),
-                End: End.ToOption(),
-                LabelFont: LabelFont.ToOption(),
-                LabelFormat: LabelFormat.ToOption(),
-                Operation: Operation.ToOption(),
-                ShowLabels: ShowLabels.ToOption(),
-                ShowLines: ShowLines.ToOption(),
-                Size: Size.ToOption(),
-                Start: Start.ToOption(),
-                Type: Type.ToOption(),
-                Value: Value.ToOption()
-            );
+            where ValueType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.Contours.init(
+                    Coloring: Coloring.ToOption(),
+                    End: End.ToOption(),
+                    LabelFont: LabelFont.ToOption(),
+                    LabelFormat: LabelFormat.ToOption(),
+                    Operation: Operation.ToOption(),
+                    ShowLabels: ShowLabels.ToOption(),
+                    ShowLines: ShowLines.ToOption(),
+                    Size: Size.ToOption(),
+                    Start: Start.ToOption(),
+                    Type: Type.ToOption(),
+                    Value: Value.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs
index 2a7dd309c..c3e4ce2b7 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Cumulative.cs
@@ -10,18 +10,17 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Cumulative Cumulative
+    public static Plotly.NET.TraceObjects.Cumulative InitCumulative
         (
-
             Optional<bool> Enabled = default,
             Optional<StyleParam.CumulativeDirection> Direction = default,
             Optional<StyleParam.Currentbin> Currentbin = default
-        ) => 
-            Plotly.NET.TraceObjects.Cumulative.init(
-
-                Enabled: Enabled.ToOption(),
-                Direction: Direction.ToOption(),
-                Currentbin: Currentbin.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Cumulative.init(
+                    Enabled: Enabled.ToOption(),
+                    Direction: Direction.ToOption(),
+                    Currentbin: Currentbin.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs
index 66b250242..f197ba9b9 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Dimensions.cs
@@ -3,6 +3,8 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection.Emit;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -10,9 +12,8 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Dimension Dimension<LabelType, TextType, ValueType>
+    public static Plotly.NET.TraceObjects.Dimension InitParallelDimension<LabelType, TickType, ValuesType>
         (
-
             Optional<StyleParam.Range> ConstraintRange = default,
             Optional<LabelType> Label = default,
             Optional<bool> MultiSelect = default,
@@ -20,31 +21,43 @@ public static Plotly.NET.TraceObjects.Dimension Dimension<LabelType, TextType, V
             Optional<StyleParam.Range> Range = default,
             Optional<string> TemplateItemName = default,
             Optional<StyleParam.TickMode> TickFormat = default,
-            Optional<IEnumerable<TextType>> TickText = default,
-            Optional<IEnumerable<ValueType>> Tickvals = default,
-            Optional<IEnumerable<ValueType>> Values = default,
-            Optional<bool> Visible = default,
-            Optional<bool> AxisMatches = default,
-            Optional<StyleParam.AxisType> AxisType = default,
-            Optional<#IConvertible> Label = default,
-            Optional<string> Name = default,
-            Optional<string> TemplateItemName = default,
-            Optional<IEnumerable<#IConvertible>> Values = default,
+            Optional<IEnumerable<TickType>> TickText = default,
+            Optional<IEnumerable<TickType>> Tickvals = default,
+            Optional<IEnumerable<ValuesType>> Values = default,
             Optional<bool> Visible = default
-        ) => 
-            Plotly.NET.TraceObjects.Dimension.init(
+        ) 
+            where LabelType : IConvertible
+            where TickType : IConvertible
+            where ValuesType : IConvertible
+            =>
+                Plotly.NET.TraceObjects.Dimension.initParallel<LabelType, TickType, TickType, ValuesType>(
+                    ConstraintRange: ConstraintRange.ToOption(),
+                    Label: Label.ToOption(),
+                    MultiSelect: MultiSelect.ToOption(),
+                    Name: Name.ToOption(),
+                    Range: Range.ToOption(),
+                    TemplateItemName: TemplateItemName.ToOption(),
+                    TickFormat: TickFormat.ToOption(),
+                    TickText: TickText.ToOption(),
+                    Tickvals: Tickvals.ToOption(),
+                    Values: Values.ToOption(),
+                    Visible: Visible.ToOption()
+                );
 
-                ConstraintRange: ConstraintRange.ToOption(),
-                Label: Label.ToOption(),
-                MultiSelect: MultiSelect.ToOption(),
-                Name: Name.ToOption(),
-                Range: Range.ToOption(),
-                TemplateItemName: TemplateItemName.ToOption(),
-                TickFormat: TickFormat.ToOption(),
-                TickText: TickText.ToOption(),
-                Tickvals: Tickvals.ToOption(),
-                Values: Values.ToOption(),
-                Visible: Visible.ToOption(),
+    public static Plotly.NET.TraceObjects.Dimension InitSplomDimension<LabelType, ValuesType>
+    (
+        Optional<bool> AxisMatches = default,
+        Optional<StyleParam.AxisType> AxisType = default,
+        Optional<LabelType> Label = default,
+        Optional<string> Name = default,
+        Optional<string> TemplateItemName = default,
+        Optional<IEnumerable<ValuesType>> Values = default,
+        Optional<bool> Visible = default
+    )
+        where LabelType : IConvertible
+        where ValuesType : IConvertible
+        =>
+            Plotly.NET.TraceObjects.Dimension.initSplom<LabelType, ValuesType>(
                 AxisMatches: AxisMatches.ToOption(),
                 AxisType: AxisType.ToOption(),
                 Label: Label.ToOption(),
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs
index 27d376363..90fc52569 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Error.cs
@@ -10,14 +10,13 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Error Error
+    public static Plotly.NET.TraceObjects.Error InitError<ArrayType, ArrayminusType>
         (
-
             Optional<bool> Visible = default,
             Optional<StyleParam.ErrorType> Type = default,
             Optional<bool> Symmetric = default,
-            Optional<IEnumerable<#IConvertible>> Array = default,
-            Optional<IEnumerable<#IConvertible>> Arrayminus = default,
+            Optional<IEnumerable<ArrayType>> Array = default,
+            Optional<IEnumerable<ArrayminusType>> Arrayminus = default,
             Optional<double> Value = default,
             Optional<double> Valueminus = default,
             Optional<int> Traceref = default,
@@ -26,22 +25,24 @@ public static Plotly.NET.TraceObjects.Error Error
             Optional<Color> Color = default,
             Optional<double> Thickness = default,
             Optional<double> Width = default
-        ) => 
-            Plotly.NET.TraceObjects.Error.init(
-
-                Visible: Visible.ToOption(),
-                Type: Type.ToOption(),
-                Symmetric: Symmetric.ToOption(),
-                Array: Array.ToOption(),
-                Arrayminus: Arrayminus.ToOption(),
-                Value: Value.ToOption(),
-                Valueminus: Valueminus.ToOption(),
-                Traceref: Traceref.ToOption(),
-                Tracerefminus: Tracerefminus.ToOption(),
-                Copy_ystyle: Copy_ystyle.ToOption(),
-                Color: Color.ToOption(),
-                Thickness: Thickness.ToOption(),
-                Width: Width.ToOption()
-            );
+        ) 
+            where ArrayType: IConvertible
+            where ArrayminusType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.Error.init(
+                    Visible: Visible.ToOption(),
+                    Type: Type.ToOption(),
+                    Symmetric: Symmetric.ToOption(),
+                    Array: Array.ToOption(),
+                    Arrayminus: Arrayminus.ToOption(),
+                    Value: Value.ToOption(),
+                    Valueminus: Valueminus.ToOption(),
+                    Traceref: Traceref.ToOption(),
+                    Tracerefminus: Tracerefminus.ToOption(),
+                    Copy_ystyle: Copy_ystyle.ToOption(),
+                    Color: Color.ToOption(),
+                    Thickness: Thickness.ToOption(),
+                    Width: Width.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs
index e2c7a76f6..d475a8e0f 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FinanceMarker.cs
@@ -10,20 +10,19 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.FinanceMarker FinanceMarker
+    public static Plotly.NET.TraceObjects.FinanceMarker InitFinanceMarker
         (
-
             Optional<Color> MarkerColor = default,
             Optional<Color> LineColor = default,
             Optional<double> LineWidth = default,
             Optional<StyleParam.DrawingStyle> LineDash = default
-        ) => 
-            Plotly.NET.TraceObjects.FinanceMarker.init(
-
-                MarkerColor: MarkerColor.ToOption(),
-                LineColor: LineColor.ToOption(),
-                LineWidth: LineWidth.ToOption(),
-                LineDash: LineDash.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.FinanceMarker.init(
+                    MarkerColor: MarkerColor.ToOption(),
+                    LineColor: LineColor.ToOption(),
+                    LineWidth: LineWidth.ToOption(),
+                    LineDash: LineDash.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs
index 8c3a9e429..5ac39e987 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/FunnelConnector.cs
@@ -10,18 +10,18 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.FunnelConnector FunnelConnector
+    public static Plotly.NET.TraceObjects.FunnelConnector InitFunnelConnector
         (
-
             Optional<Color> FillColor = default,
             Optional<Line> Line = default,
             Optional<bool> Visible = default
-        ) => 
-            Plotly.NET.TraceObjects.FunnelConnector.init(
+        ) 
+            =>
+                Plotly.NET.TraceObjects.FunnelConnector.init(
 
-                FillColor: FillColor.ToOption(),
-                Line: Line.ToOption(),
-                Visible: Visible.ToOption()
-            );
+                    FillColor: FillColor.ToOption(),
+                    Line: Line.ToOption(),
+                    Visible: Visible.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs
index debed6d6e..b30f182f1 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Gradient.cs
@@ -10,18 +10,17 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Gradient Gradient
+    public static Plotly.NET.TraceObjects.Gradient InitGradient
         (
-
             Optional<Color> Color = default,
             Optional<StyleParam.GradientType> Type = default,
             Optional<IEnumerable<StyleParam.GradientType>> MultiTypes = default
-        ) => 
-            Plotly.NET.TraceObjects.Gradient.init(
-
-                Color: Color.ToOption(),
-                Type: Type.ToOption(),
-                MultiTypes: MultiTypes.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Gradient.init(
+                    Color: Color.ToOption(),
+                    Type: Type.ToOption(),
+                    MultiTypes: MultiTypes.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs
index 05622da35..d2efb44aa 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Icicle.cs
@@ -10,43 +10,33 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.IcicleRoot IcicleRoot
+    public static Plotly.NET.TraceObjects.IcicleRoot InitIcicleRoot
         (
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.IcicleRoot.init(
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IcicleLeaf IcicleLeaf
+            Optional<Color> Color = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.IcicleRoot.init(
+                    Color: Color.ToOption()
+                );
+
+    public static Plotly.NET.TraceObjects.IcicleLeaf InitIcicleLeaf
         (
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.IcicleLeaf.init(
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IcicleTiling IcicleTiling
+            Optional<double> Opacity = default
+        )
+            =>
+                Plotly.NET.TraceObjects.IcicleLeaf.init(
+                    Opacity: Opacity.ToOption()
+                );
+
+    public static Plotly.NET.TraceObjects.IcicleTiling InitIcicleTiling
         (
 
             Optional<StyleParam.TilingFlip> Flip = default,
             Optional<StyleParam.Orientation> Orientation = default,
             Optional<int> Pad = default
-        ) => 
+        ) 
+
+            =>
             Plotly.NET.TraceObjects.IcicleTiling.init(
 
                 Flip: Flip.ToOption(),
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs
index b862ddbfe..80f33aee6 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Indicator.cs
@@ -10,136 +10,108 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.IndicatorSymbol IndicatorSymbol
+    public static Plotly.NET.TraceObjects.IndicatorSymbol InitIndicatorSymbol
         (
-
             Optional<Color> Color = default,
             Optional<string> Symbol = default
-        ) => 
-            Plotly.NET.TraceObjects.IndicatorSymbol.init(
-
-                Color: Color.ToOption(),
-                Symbol: Symbol.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IndicatorDelta IndicatorDelta
+        ) 
+            =>
+                Plotly.NET.TraceObjects.IndicatorSymbol.init(
+                    Color: Color.ToOption(),
+                    Symbol: Symbol.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.IndicatorDelta InitIndicatorDelta<ReferenceType>
         (
-
-            Optional<IndicatorSymbol> Decreasing = default,
+            Optional<Plotly.NET.TraceObjects.IndicatorSymbol> Decreasing = default,
             Optional<Font> Font = default,
-            Optional<IndicatorSymbol> Increasing = default,
+            Optional<Plotly.NET.TraceObjects.IndicatorSymbol> Increasing = default,
             Optional<StyleParam.IndicatorDeltaPosition> Position = default,
-            Optional<#IConvertible> Reference = default,
+            Optional<ReferenceType> Reference = default,
             Optional<bool> Relative = default,
             Optional<string> ValueFormat = default
-        ) => 
-            Plotly.NET.TraceObjects.IndicatorDelta.init(
-
-                Decreasing: Decreasing.ToOption(),
-                Font: Font.ToOption(),
-                Increasing: Increasing.ToOption(),
-                Position: Position.ToOption(),
-                Reference: Reference.ToOption(),
-                Relative: Relative.ToOption(),
-                ValueFormat: ValueFormat.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IndicatorNumber IndicatorNumber
+        ) 
+            where ReferenceType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.IndicatorDelta.init(
+                    Decreasing: Decreasing.ToOption(),
+                    Font: Font.ToOption(),
+                    Increasing: Increasing.ToOption(),
+                    Position: Position.ToOption(),
+                    Reference: Reference.ToOption(),
+                    Relative: Relative.ToOption(),
+                    ValueFormat: ValueFormat.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.IndicatorNumber InitIndicatorNumber
         (
-
             Optional<Font> Font = default,
             Optional<string> Prefix = default,
             Optional<string> Suffix = default,
             Optional<string> ValueFormat = default
-        ) => 
-            Plotly.NET.TraceObjects.IndicatorNumber.init(
-
-                Font: Font.ToOption(),
-                Prefix: Prefix.ToOption(),
-                Suffix: Suffix.ToOption(),
-                ValueFormat: ValueFormat.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IndicatorBar IndicatorBar
+        ) 
+
+            =>
+                Plotly.NET.TraceObjects.IndicatorNumber.init(
+                    Font: Font.ToOption(),
+                    Prefix: Prefix.ToOption(),
+                    Suffix: Suffix.ToOption(),
+                    ValueFormat: ValueFormat.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.IndicatorBar InitIndicatorBar
         (
-
             Optional<Color> Color = default,
             Optional<Line> Line = default,
             Optional<double> Thickness = default
-        ) => 
-            Plotly.NET.TraceObjects.IndicatorBar.init(
-
-                Color: Color.ToOption(),
-                Line: Line.ToOption(),
-                Thickness: Thickness.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IndicatorStep IndicatorStep
+        ) 
+            =>
+                Plotly.NET.TraceObjects.IndicatorBar.init(
+                    Color: Color.ToOption(),
+                    Line: Line.ToOption(),
+                    Thickness: Thickness.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.IndicatorStep InitIndicatorStep
         (
-
             Optional<Color> Color = default,
             Optional<Line> Line = default,
             Optional<string> Name = default,
             Optional<StyleParam.Range> Range = default,
             Optional<string> TemplateItemName = default,
             Optional<double> Thickness = default
-        ) => 
-            Plotly.NET.TraceObjects.IndicatorStep.init(
-
-                Color: Color.ToOption(),
-                Line: Line.ToOption(),
-                Name: Name.ToOption(),
-                Range: Range.ToOption(),
-                TemplateItemName: TemplateItemName.ToOption(),
-                Thickness: Thickness.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IndicatorThreshold IndicatorThreshold
+        ) 
+            =>
+                Plotly.NET.TraceObjects.IndicatorStep.init(
+                    Color: Color.ToOption(),
+                    Line: Line.ToOption(),
+                    Name: Name.ToOption(),
+                    Range: Range.ToOption(),
+                    TemplateItemName: TemplateItemName.ToOption(),
+                    Thickness: Thickness.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.IndicatorThreshold InitIndicatorThreshold<ValueType>
         (
-
             Optional<Line> Line = default,
             Optional<double> Thickness = default,
-            Optional<#IConvertible> Value = default
-        ) => 
-            Plotly.NET.TraceObjects.IndicatorThreshold.init(
-
-                Line: Line.ToOption(),
-                Thickness: Thickness.ToOption(),
-                Value: Value.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.IndicatorGauge IndicatorGauge
+            Optional<ValueType> Value = default
+        ) 
+            where ValueType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.IndicatorThreshold.init(
+                    Line: Line.ToOption(),
+                    Thickness: Thickness.ToOption(),
+                    Value: Value.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.IndicatorGauge InitIndicatorGauge
         (
-
-            Optional<LinearAxis> Axis = default,
-            Optional<IndicatorBar> Bar = default,
+            Optional<Plotly.NET.LayoutObjects.LinearAxis> Axis = default,
+            Optional<Plotly.NET.TraceObjects.IndicatorBar> Bar = default,
             Optional<Color> BGColor = default,
             Optional<Color> BorderColor = default,
             Optional<int> BorderWidth = default,
             Optional<StyleParam.IndicatorGaugeShape> Shape = default,
-            Optional<IEnumerable<IndicatorStep>> Steps = default,
-            Optional<IndicatorThreshold> Threshold = default
-        ) => 
+            Optional<IEnumerable<Plotly.NET.TraceObjects.IndicatorStep>> Steps = default,
+            Optional<Plotly.NET.TraceObjects.IndicatorThreshold> Threshold = default
+        ) 
+            =>
             Plotly.NET.TraceObjects.IndicatorGauge.init(
-
                 Axis: Axis.ToOption(),
                 Bar: Bar.ToOption(),
                 BGColor: BGColor.ToOption(),
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs
index 62eaacc65..54261950e 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Lighting.cs
@@ -10,9 +10,8 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Lighting Lighting
+    public static Plotly.NET.TraceObjects.Lighting InitLighting
         (
-
             Optional<double> Ambient = default,
             Optional<double> Diffuse = default,
             Optional<double> FaceNormalEpsilon = default,
@@ -20,30 +19,25 @@ public static Plotly.NET.TraceObjects.Lighting Lighting
             Optional<double> Roughness = default,
             Optional<double> Specular = default,
             Optional<double> VertexNormalEpsilon = default
-        ) => 
-            Plotly.NET.TraceObjects.Lighting.init(
-
-                Ambient: Ambient.ToOption(),
-                Diffuse: Diffuse.ToOption(),
-                FaceNormalEpsilon: FaceNormalEpsilon.ToOption(),
-                Fresnel: Fresnel.ToOption(),
-                Roughness: Roughness.ToOption(),
-                Specular: Specular.ToOption(),
-                VertexNormalEpsilon: VertexNormalEpsilon.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.LightPosition LightPosition
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Lighting.init(
+                    Ambient: Ambient.ToOption(),
+                    Diffuse: Diffuse.ToOption(),
+                    FaceNormalEpsilon: FaceNormalEpsilon.ToOption(),
+                    Fresnel: Fresnel.ToOption(),
+                    Roughness: Roughness.ToOption(),
+                    Specular: Specular.ToOption(),
+                    VertexNormalEpsilon: VertexNormalEpsilon.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.LightPosition InitLightPosition
         (
-
             Optional<double> X = default,
             Optional<double> Y = default,
             Optional<double> Z = default
-        ) => 
+        ) 
+            =>
             Plotly.NET.TraceObjects.LightPosition.init(
-
                 X: X.ToOption(),
                 Y: Y.ToOption(),
                 Z: Z.ToOption()
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs
index a5ceddc5e..7f162a2fe 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Marker.cs
@@ -10,9 +10,8 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Marker Marker
+    public static Plotly.NET.TraceObjects.Marker InitMarker
         (
-
             Optional<bool> AutoColorScale = default,
             Optional<bool> CAuto = default,
             Optional<double> CMax = default,
@@ -23,12 +22,12 @@ public static Plotly.NET.TraceObjects.Marker Marker
             Optional<StyleParam.SubPlotId> ColorAxis = default,
             Optional<ColorBar> ColorBar = default,
             Optional<StyleParam.Colorscale> Colorscale = default,
-            Optional<Gradient> Gradient = default,
+            Optional<Plotly.NET.TraceObjects.Gradient> Gradient = default,
             Optional<Line> Outline = default,
             Optional<int> MaxDisplayed = default,
             Optional<double> Opacity = default,
             Optional<IEnumerable<double>> MultiOpacity = default,
-            Optional<Pattern> Pattern = default,
+            Optional<Plotly.NET.TraceObjects.Pattern> Pattern = default,
             Optional<bool> ReverseScale = default,
             Optional<bool> ShowScale = default,
             Optional<int> Size = default,
@@ -42,38 +41,38 @@ public static Plotly.NET.TraceObjects.Marker Marker
             Optional<IEnumerable<StyleParam.MarkerSymbol3D>> MultiSymbol3D = default,
             Optional<Color> OutlierColor = default,
             Optional<int> OutlierWidth = default
-        ) => 
-            Plotly.NET.TraceObjects.Marker.init(
-
-                AutoColorScale: AutoColorScale.ToOption(),
-                CAuto: CAuto.ToOption(),
-                CMax: CMax.ToOption(),
-                CMid: CMid.ToOption(),
-                CMin: CMin.ToOption(),
-                Color: Color.ToOption(),
-                Colors: Colors.ToOption(),
-                ColorAxis: ColorAxis.ToOption(),
-                ColorBar: ColorBar.ToOption(),
-                Colorscale: Colorscale.ToOption(),
-                Gradient: Gradient.ToOption(),
-                Outline: Outline.ToOption(),
-                MaxDisplayed: MaxDisplayed.ToOption(),
-                Opacity: Opacity.ToOption(),
-                MultiOpacity: MultiOpacity.ToOption(),
-                Pattern: Pattern.ToOption(),
-                ReverseScale: ReverseScale.ToOption(),
-                ShowScale: ShowScale.ToOption(),
-                Size: Size.ToOption(),
-                MultiSize: MultiSize.ToOption(),
-                SizeMin: SizeMin.ToOption(),
-                SizeMode: SizeMode.ToOption(),
-                SizeRef: SizeRef.ToOption(),
-                Symbol: Symbol.ToOption(),
-                MultiSymbol: MultiSymbol.ToOption(),
-                Symbol3D: Symbol3D.ToOption(),
-                MultiSymbol3D: MultiSymbol3D.ToOption(),
-                OutlierColor: OutlierColor.ToOption(),
-                OutlierWidth: OutlierWidth.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Marker.init(
+                    AutoColorScale: AutoColorScale.ToOption(),
+                    CAuto: CAuto.ToOption(),
+                    CMax: CMax.ToOption(),
+                    CMid: CMid.ToOption(),
+                    CMin: CMin.ToOption(),
+                    Color: Color.ToOption(),
+                    Colors: Colors.ToOption(),
+                    ColorAxis: ColorAxis.ToOption(),
+                    ColorBar: ColorBar.ToOption(),
+                    Colorscale: Colorscale.ToOption(),
+                    Gradient: Gradient.ToOption(),
+                    Outline: Outline.ToOption(),
+                    MaxDisplayed: MaxDisplayed.ToOption(),
+                    Opacity: Opacity.ToOption(),
+                    MultiOpacity: MultiOpacity.ToOption(),
+                    Pattern: Pattern.ToOption(),
+                    ReverseScale: ReverseScale.ToOption(),
+                    ShowScale: ShowScale.ToOption(),
+                    Size: Size.ToOption(),
+                    MultiSize: MultiSize.ToOption(),
+                    SizeMin: SizeMin.ToOption(),
+                    SizeMode: SizeMode.ToOption(),
+                    SizeRef: SizeRef.ToOption(),
+                    Symbol: Symbol.ToOption(),
+                    MultiSymbol: MultiSymbol.ToOption(),
+                    Symbol3D: Symbol3D.ToOption(),
+                    MultiSymbol3D: MultiSymbol3D.ToOption(),
+                    OutlierColor: OutlierColor.ToOption(),
+                    OutlierWidth: OutlierWidth.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs
index 3367aa068..b38711c15 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/MeanLine.cs
@@ -10,18 +10,17 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.MeanLine MeanLine
+    public static Plotly.NET.TraceObjects.MeanLine InitMeanLine
         (
-
             Optional<bool> Visible = default,
             Optional<Color> Color = default,
             Optional<double> Width = default
-        ) => 
-            Plotly.NET.TraceObjects.MeanLine.init(
-
-                Visible: Visible.ToOption(),
-                Color: Color.ToOption(),
-                Width: Width.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.MeanLine.init(
+                    Visible: Visible.ToOption(),
+                    Color: Color.ToOption(),
+                    Width: Width.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs
index a696e4867..933bc47fd 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pathbar.cs
@@ -10,22 +10,21 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Pathbar Pathbar
+    public static Plotly.NET.TraceObjects.Pathbar InitPathbar
         (
-
             Optional<bool> Visible = default,
             Optional<StyleParam.Side> Side = default,
             Optional<StyleParam.PathbarEdgeShape> EdgeShape = default,
             Optional<double> Thickness = default,
             Optional<Font> Textfont = default
-        ) => 
-            Plotly.NET.TraceObjects.Pathbar.init(
-
-                Visible: Visible.ToOption(),
-                Side: Side.ToOption(),
-                EdgeShape: EdgeShape.ToOption(),
-                Thickness: Thickness.ToOption(),
-                Textfont: Textfont.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Pathbar.init(
+                    Visible: Visible.ToOption(),
+                    Side: Side.ToOption(),
+                    EdgeShape: EdgeShape.ToOption(),
+                    Thickness: Thickness.ToOption(),
+                    Textfont: Textfont.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs
index f04c2dcc1..987ad8729 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Pattern.cs
@@ -10,9 +10,8 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Pattern Pattern
+    public static Plotly.NET.TraceObjects.Pattern InitPattern
         (
-
             Optional<Color> BGColor = default,
             Optional<Color> FGColor = default,
             Optional<double> FGOpacity = default,
@@ -22,18 +21,18 @@ public static Plotly.NET.TraceObjects.Pattern Pattern
             Optional<int> Size = default,
             Optional<IEnumerable<int>> MultiSize = default,
             Optional<double> Solidity = default
-        ) => 
-            Plotly.NET.TraceObjects.Pattern.init(
-
-                BGColor: BGColor.ToOption(),
-                FGColor: FGColor.ToOption(),
-                FGOpacity: FGOpacity.ToOption(),
-                FillMode: FillMode.ToOption(),
-                Shape: Shape.ToOption(),
-                MultiShape: MultiShape.ToOption(),
-                Size: Size.ToOption(),
-                MultiSize: MultiSize.ToOption(),
-                Solidity: Solidity.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Pattern.init(
+                    BGColor: BGColor.ToOption(),
+                    FGColor: FGColor.ToOption(),
+                    FGOpacity: FGOpacity.ToOption(),
+                    FillMode: FillMode.ToOption(),
+                    Shape: Shape.ToOption(),
+                    MultiShape: MultiShape.ToOption(),
+                    Size: Size.ToOption(),
+                    MultiSize: MultiSize.ToOption(),
+                    Solidity: Solidity.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs
index 33853253b..38cc6f844 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Projection.cs
@@ -10,35 +10,29 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.ProjectionDimension ProjectionDimension
+    public static Plotly.NET.TraceObjects.ProjectionDimension InitProjectionDimension
         (
-
             Optional<double> Opacity = default,
             Optional<double> Scale = default,
             Optional<bool> Show = default
-        ) => 
-            Plotly.NET.TraceObjects.ProjectionDimension.init(
-
-                Opacity: Opacity.ToOption(),
-                Scale: Scale.ToOption(),
-                Show: Show.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.Projection Projection
+        ) 
+            =>
+                Plotly.NET.TraceObjects.ProjectionDimension.init(
+                    Opacity: Opacity.ToOption(),
+                    Scale: Scale.ToOption(),
+                    Show: Show.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.Projection InitProjection
         (
-
-            Optional<ProjectionDimension> X = default,
-            Optional<ProjectionDimension> Y = default,
-            Optional<ProjectionDimension> Z = default
-        ) => 
-            Plotly.NET.TraceObjects.Projection.init(
-
-                X: X.ToOption(),
-                Y: Y.ToOption(),
-                Z: Z.ToOption()
-            );
+            Optional<Plotly.NET.TraceObjects.ProjectionDimension> X = default,
+            Optional<Plotly.NET.TraceObjects.ProjectionDimension> Y = default,
+            Optional<Plotly.NET.TraceObjects.ProjectionDimension> Z = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Projection.init(
+                    X: X.ToOption(),
+                    Y: Y.ToOption(),
+                    Z: Z.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs
index 548471c68..b06eedea2 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sankey.cs
@@ -10,96 +10,90 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.SankeyNodes SankeyNodes
+    public static Plotly.NET.TraceObjects.SankeyNodes InitSankeyNodes<CustomDataType, XType, YType>
         (
-
             Optional<Color> Color = default,
-            Optional<IEnumerable<#IConvertible>> CustomData = default,
-            Optional<IEnumerable<#IEnumerable<int>>> Groups = default,
+            Optional<IEnumerable<CustomDataType>> CustomData = default,
+            Optional<IEnumerable<IEnumerable<int>>> Groups = default,
             Optional<StyleParam.HoverInfo> HoverInfo = default,
-            Optional<Hoverlabel> HoverLabel = default,
+            Optional<Plotly.NET.LayoutObjects.Hoverlabel> HoverLabel = default,
             Optional<string> HoverTemplate = default,
             Optional<IEnumerable<string>> MultiHoverTemplate = default,
             Optional<IEnumerable<string>> Label = default,
             Optional<Line> Line = default,
             Optional<int> Pad = default,
             Optional<int> Thickness = default,
-            Optional<IEnumerable<#IConvertible>> X = default,
-            Optional<IEnumerable<#IConvertible>> Y = default
-        ) => 
-            Plotly.NET.TraceObjects.SankeyNodes.init(
-
-                Color: Color.ToOption(),
-                CustomData: CustomData.ToOption(),
-                Groups: Groups.ToOption(),
-                HoverInfo: HoverInfo.ToOption(),
-                HoverLabel: HoverLabel.ToOption(),
-                HoverTemplate: HoverTemplate.ToOption(),
-                MultiHoverTemplate: MultiHoverTemplate.ToOption(),
-                Label: Label.ToOption(),
-                Line: Line.ToOption(),
-                Pad: Pad.ToOption(),
-                Thickness: Thickness.ToOption(),
-                X: X.ToOption(),
-                Y: Y.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.SankeyLinkColorscale SankeyLinkColorscale
+            Optional<IEnumerable<XType>> X = default,
+            Optional<IEnumerable<YType>> Y = default
+        ) 
+            where CustomDataType: IConvertible
+            where XType: IConvertible
+            where YType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.SankeyNodes.init(
+                    Color: Color.ToOption(),
+                    CustomData: CustomData.ToOption(),
+                    Groups: Groups.ToOption(),
+                    HoverInfo: HoverInfo.ToOption(),
+                    HoverLabel: HoverLabel.ToOption(),
+                    HoverTemplate: HoverTemplate.ToOption(),
+                    MultiHoverTemplate: MultiHoverTemplate.ToOption(),
+                    Label: Label.ToOption(),
+                    Line: Line.ToOption(),
+                    Pad: Pad.ToOption(),
+                    Thickness: Thickness.ToOption(),
+                    X: X.ToOption(),
+                    Y: Y.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.SankeyLinkColorscale InitSankeyLinkColorscale
         (
-
             Optional<double> CMax = default,
             Optional<double> CMin = default,
             Optional<StyleParam.Colorscale> ColorScale = default,
             Optional<string> Label = default,
             Optional<string> Name = default,
             Optional<string> TemplateItemName = default
-        ) => 
-            Plotly.NET.TraceObjects.SankeyLinkColorscale.init(
-
-                CMax: CMax.ToOption(),
-                CMin: CMin.ToOption(),
-                ColorScale: ColorScale.ToOption(),
-                Label: Label.ToOption(),
-                Name: Name.ToOption(),
-                TemplateItemName: TemplateItemName.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.SankeyLinks SankeyLinks
+        ) 
+            =>
+                Plotly.NET.TraceObjects.SankeyLinkColorscale.init(
+                    CMax: CMax.ToOption(),
+                    CMin: CMin.ToOption(),
+                    ColorScale: ColorScale.ToOption(),
+                    Label: Label.ToOption(),
+                    Name: Name.ToOption(),
+                    TemplateItemName: TemplateItemName.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.SankeyLinks InitSankeyLinks<CustomDataType, ValueType>
         (
-
             Optional<Color> Color = default,
-            Optional<IEnumerable<SankeyLinkColorscale>> ColorScales = default,
-            Optional<IEnumerable<#IConvertible>> CustomData = default,
+            Optional<IEnumerable<Plotly.NET.TraceObjects.SankeyLinkColorscale>> ColorScales = default,
+            Optional<IEnumerable<CustomDataType>> CustomData = default,
             Optional<StyleParam.HoverInfo> HoverInfo = default,
-            Optional<Hoverlabel> HoverLabel = default,
+            Optional<Plotly.NET.LayoutObjects.Hoverlabel> HoverLabel = default,
             Optional<string> HoverTemplate = default,
             Optional<IEnumerable<string>> MultiHoverTemplate = default,
             Optional<IEnumerable<string>> Label = default,
             Optional<Line> Line = default,
             Optional<IEnumerable<int>> Source = default,
             Optional<IEnumerable<int>> Target = default,
-            Optional<IEnumerable<#IConvertible>> Value = default
-        ) => 
-            Plotly.NET.TraceObjects.SankeyLinks.init(
-
-                Color: Color.ToOption(),
-                ColorScales: ColorScales.ToOption(),
-                CustomData: CustomData.ToOption(),
-                HoverInfo: HoverInfo.ToOption(),
-                HoverLabel: HoverLabel.ToOption(),
-                HoverTemplate: HoverTemplate.ToOption(),
-                MultiHoverTemplate: MultiHoverTemplate.ToOption(),
-                Label: Label.ToOption(),
-                Line: Line.ToOption(),
-                Source: Source.ToOption(),
-                Target: Target.ToOption(),
-                Value: Value.ToOption()
-            );
+            Optional<IEnumerable<ValueType>> Value = default
+        ) 
+            where CustomDataType: IConvertible
+            where ValueType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.SankeyLinks.init(
+                    Color: Color.ToOption(),
+                    ColorScales: ColorScales.ToOption(),
+                    CustomData: CustomData.ToOption(),
+                    HoverInfo: HoverInfo.ToOption(),
+                    HoverLabel: HoverLabel.ToOption(),
+                    HoverTemplate: HoverTemplate.ToOption(),
+                    MultiHoverTemplate: MultiHoverTemplate.ToOption(),
+                    Label: Label.ToOption(),
+                    Line: Line.ToOption(),
+                    Source: Source.ToOption(),
+                    Target: Target.ToOption(),
+                    Value: Value.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs
index 8b70443aa..b587cd01d 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Selection.cs
@@ -10,52 +10,35 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.MarkerSelectionStyle MarkerSelectionStyle
+    public static Plotly.NET.TraceObjects.MarkerSelectionStyle InitMarkerSelectionStyle
         (
-
             Optional<double> Opacity = default,
             Optional<Color> Color = default,
             Optional<double> Size = default
-        ) => 
-            Plotly.NET.TraceObjects.MarkerSelectionStyle.init(
-
-                Opacity: Opacity.ToOption(),
-                Color: Color.ToOption(),
-                Size: Size.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.FontSelectionStyle FontSelectionStyle
+        ) 
+            =>
+                Plotly.NET.TraceObjects.MarkerSelectionStyle.init(
+                    Opacity: Opacity.ToOption(),
+                    Color: Color.ToOption(),
+                    Size: Size.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.FontSelectionStyle InitFontSelectionStyle
         (
-             ,
-             ,
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.FontSelectionStyle.init(
-                : ,
-                : ,
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.Selection Selection
+            Optional<Color> Color = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.FontSelectionStyle.init(
+                    Color: Color.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.Selection InitSelection
         (
-
-            Optional<MarkerSelectionStyle> MarkerSelectionStyle = default,
-            Optional<FontSelectionStyle> FontSelectionStyle = default
-        ) => 
-            Plotly.NET.TraceObjects.Selection.init(
-
-                MarkerSelectionStyle: MarkerSelectionStyle.ToOption(),
-                FontSelectionStyle: FontSelectionStyle.ToOption()
-            );
+            Optional<Plotly.NET.TraceObjects.MarkerSelectionStyle> MarkerSelectionStyle = default,
+            Optional<Plotly.NET.TraceObjects.FontSelectionStyle> FontSelectionStyle = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Selection.init(
+                    MarkerSelectionStyle: MarkerSelectionStyle.ToOption(),
+                    FontSelectionStyle: FontSelectionStyle.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs
index 85a2df01c..4ff69e162 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Slices.cs
@@ -10,35 +10,30 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.SlicesFill SlicesFill
+    public static Plotly.NET.TraceObjects.SlicesFill InitSlicesFill<LocationsType>
         (
-
             Optional<double> Fill = default,
-            Optional<IEnumerable<#IConvertible>> Locations = default,
+            Optional<IEnumerable<LocationsType>> Locations = default,
             Optional<bool> Show = default
-        ) => 
-            Plotly.NET.TraceObjects.SlicesFill.init(
-
-                Fill: Fill.ToOption(),
-                Locations: Locations.ToOption(),
-                Show: Show.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.Slices Slices
+        ) 
+            where LocationsType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.SlicesFill.init(
+                    Fill: Fill.ToOption(),
+                    Locations: Locations.ToOption(),
+                    Show: Show.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.Slices InitSlices
         (
-
-            Optional<SlicesFill> X = default,
-            Optional<SlicesFill> Y = default,
-            Optional<SlicesFill> Z = default
-        ) => 
-            Plotly.NET.TraceObjects.Slices.init(
-
-                X: X.ToOption(),
-                Y: Y.ToOption(),
-                Z: Z.ToOption()
-            );
+            Optional<Plotly.NET.TraceObjects.SlicesFill> X = default,
+            Optional<Plotly.NET.TraceObjects.SlicesFill> Y = default,
+            Optional<Plotly.NET.TraceObjects.SlicesFill> Z = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Slices.init(
+                    X: X.ToOption(),
+                    Y: Y.ToOption(),
+                    Z: Z.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs
index de830f42b..d49d53f55 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SpaceFrame.cs
@@ -10,16 +10,15 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Spaceframe Spaceframe
+    public static Plotly.NET.TraceObjects.Spaceframe InitSpaceframe
         (
-
             Optional<double> Fill = default,
             Optional<bool> Show = default
-        ) => 
-            Plotly.NET.TraceObjects.Spaceframe.init(
-
-                Fill: Fill.ToOption(),
-                Show: Show.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Spaceframe.init(
+                    Fill: Fill.ToOption(),
+                    Show: Show.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs
index 615061945..53a43225d 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/SplomDiagonal.cs
@@ -10,16 +10,13 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.SplomDiagonal SplomDiagonal
+    public static Plotly.NET.TraceObjects.SplomDiagonal InitSplomDiagonal
         (
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.SplomDiagonal.init(
-                : ,
-                : 
-
-            );
+            Optional<bool> Visible = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.SplomDiagonal.init(
+                    Visible: Visible.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs
deleted file mode 100644
index a9212c44d..000000000
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StockData.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-
-using Microsoft.FSharp.Core;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Plotly.NET.CSharp;
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.StockData StockData
-        (
-
-
-        ) => 
-            Plotly.NET.TraceObjects.StockData.init(
-
-
-            );
-}
-
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs
index d4d8bd51c..c97b12606 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/StreamTubeStarts.cs
@@ -10,18 +10,20 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.StreamTubeStarts StreamTubeStarts
+    public static Plotly.NET.TraceObjects.StreamTubeStarts InitStreamTubeStarts<XType, YType, ZType>
         (
-
-            Optional<IEnumerable<#IConvertible>> X = default,
-            Optional<IEnumerable<#IConvertible>> Y = default,
-            Optional<IEnumerable<#IConvertible>> Z = default
-        ) => 
-            Plotly.NET.TraceObjects.StreamTubeStarts.init(
-
-                X: X.ToOption(),
-                Y: Y.ToOption(),
-                Z: Z.ToOption()
-            );
+            Optional<IEnumerable<XType>> X = default,
+            Optional<IEnumerable<YType>> Y = default,
+            Optional<IEnumerable<ZType>> Z = default
+        ) 
+            where XType: IConvertible
+            where YType: IConvertible
+            where ZType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.StreamTubeStarts.init(
+                    X: X.ToOption(),
+                    Y: Y.ToOption(),
+                    Z: Z.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs
index b9701ed44..2a7c93927 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Sunburst.cs
@@ -10,35 +10,21 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.SunburstRoot SunburstRoot
+    public static Plotly.NET.TraceObjects.SunburstRoot InitSunburstRoot
         (
-             ,
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.SunburstRoot.init(
-                : ,
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.SunburstLeaf SunburstLeaf
+            Optional<Color> Color = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.SunburstRoot.init(
+                    Color: Color.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.SunburstLeaf InitSunburstLeaf
         (
-             ,
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.SunburstLeaf.init(
-                : ,
-                : ,
-                : 
-
-            );
+            Optional<double> Opacity = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.SunburstLeaf.init(
+                    Opacity: Opacity.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs
index 33fcacebd..2768099b5 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Surface.cs
@@ -10,20 +10,19 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.Surface Surface
+    public static Plotly.NET.TraceObjects.Surface InitSurface
         (
-
             Optional<int> Count = default,
             Optional<double> Fill = default,
             Optional<StyleParam.SurfacePattern> Pattern = default,
             Optional<bool> Show = default
-        ) => 
-            Plotly.NET.TraceObjects.Surface.init(
-
-                Count: Count.ToOption(),
-                Fill: Fill.ToOption(),
-                Pattern: Pattern.ToOption(),
-                Show: Show.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.Surface.init(
+                    Count: Count.ToOption(),
+                    Fill: Fill.ToOption(),
+                    Pattern: Pattern.ToOption(),
+                    Show: Show.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
index f4c63bd91..6d8d90b5b 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
@@ -10,27 +10,19 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.TableFill TableFill
+    public static Plotly.NET.TraceObjects.TableFill InitTableFill
         (
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.TableFill.init(
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.TableCells TableCells
+            Optional<Color> Color = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.TableFill.init(
+                    Color: Color.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.TableCells InitTableCells<ValuesType>
         (
-
             Optional<StyleParam.HorizontalAlign> Align = default,
             Optional<IEnumerable<StyleParam.HorizontalAlign>> MultiAlign = default,
-            Optional<TableFill> Fill = default,
+            Optional<Plotly.NET.TraceObjects.TableFill> Fill = default,
             Optional<Font> Font = default,
             Optional<IEnumerable<string>> Format = default,
             Optional<int> Height = default,
@@ -39,35 +31,23 @@ public static Plotly.NET.TraceObjects.TableCells TableCells
             Optional<IEnumerable<string>> MultiPrefix = default,
             Optional<string> Suffix = default,
             Optional<IEnumerable<string>> MultiSuffix = default,
-            Optional<IEnumerable<#IEnumerable<#IConvertible>>> Values = default
-        ) => 
-            Plotly.NET.TraceObjects.TableCells.init(
-
-                Align: Align.ToOption(),
-                MultiAlign: MultiAlign.ToOption(),
-                Fill: Fill.ToOption(),
-                Font: Font.ToOption(),
-                Format: Format.ToOption(),
-                Height: Height.ToOption(),
-                Line: Line.ToOption(),
-                Prefix: Prefix.ToOption(),
-                MultiPrefix: MultiPrefix.ToOption(),
-                Suffix: Suffix.ToOption(),
-                MultiSuffix: MultiSuffix.ToOption(),
-                Values: Values.ToOption()
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.TableHeader TableHeader
-        (
-
-
-        ) => 
-            Plotly.NET.TraceObjects.TableHeader.init(
-
-
-            );
+            Optional<IEnumerable<IEnumerable<ValuesType>>> Values = default
+        ) 
+            where ValuesType: IConvertible
+            =>
+                Plotly.NET.TraceObjects.TableCells.init(
+                    Align: Align.ToOption(),
+                    MultiAlign: MultiAlign.ToOption(),
+                    Fill: Fill.ToOption(),
+                    Font: Font.ToOption(),
+                    Format: Format.ToOption(),
+                    Height: Height.ToOption(),
+                    Line: Line.ToOption(),
+                    Prefix: Prefix.ToOption(),
+                    MultiPrefix: MultiPrefix.ToOption(),
+                    Suffix: Suffix.ToOption(),
+                    MultiSuffix: MultiSuffix.ToOption(),
+                    Values: Values.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs
index 54973d60b..7de72bf78 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Treemap.cs
@@ -10,54 +10,35 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.TreemapRoot TreemapRoot
+    public static Plotly.NET.TraceObjects.TreemapRoot InitTreemapRoot
         (
-             ,
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.TreemapRoot.init(
-                : ,
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.TreemapLeaf TreemapLeaf
+            Optional<Color> Color = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.TreemapRoot.init(
+                    Color: Color.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.TreemapLeaf InitTreemapLeaf
         (
-             ,
-             ,
-             
-
-        ) => 
-            Plotly.NET.TraceObjects.TreemapLeaf.init(
-                : ,
-                : ,
-                : 
-
-            );
-}
-
-public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.TreemapTiling TreemapTiling
+            Optional<double> Opacity = default
+        ) 
+            =>
+                Plotly.NET.TraceObjects.TreemapLeaf.init(
+                    Opacity: Opacity.ToOption()
+                );
+    public static Plotly.NET.TraceObjects.TreemapTiling InitTreemapTiling
         (
-
             Optional<StyleParam.TreemapTilingPacking> Packing = default,
             Optional<double> SquarifyRatio = default,
             Optional<StyleParam.TilingFlip> Flip = default,
             Optional<double> Pad = default
-        ) => 
-            Plotly.NET.TraceObjects.TreemapTiling.init(
-
-                Packing: Packing.ToOption(),
-                SquarifyRatio: SquarifyRatio.ToOption(),
-                Flip: Flip.ToOption(),
-                Pad: Pad.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.TreemapTiling.init(
+                    Packing: Packing.ToOption(),
+                    SquarifyRatio: SquarifyRatio.ToOption(),
+                    Flip: Flip.ToOption(),
+                    Pad: Pad.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs
index 0e2024e97..d057ca522 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/WaterfallConnector.cs
@@ -10,18 +10,17 @@ namespace Plotly.NET.CSharp;
 
 public static partial class TraceObjects
 {
-    public static Plotly.NET.TraceObjects.WaterfallConnector WaterfallConnector
+    public static Plotly.NET.TraceObjects.WaterfallConnector InitWaterfallConnector
         (
-
             Optional<Line> Line = default,
             Optional<bool> Visible = default,
             Optional<StyleParam.ConnectorMode> ConnectorMode = default
-        ) => 
-            Plotly.NET.TraceObjects.WaterfallConnector.init(
-
-                Line: Line.ToOption(),
-                Visible: Visible.ToOption(),
-                ConnectorMode: ConnectorMode.ToOption()
-            );
+        ) 
+            =>
+                Plotly.NET.TraceObjects.WaterfallConnector.init(
+                    Line: Line.ToOption(),
+                    Visible: Visible.ToOption(),
+                    ConnectorMode: ConnectorMode.ToOption()
+                );
 }
 
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
index cdb3693c9..de7f53473 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
@@ -2,18 +2,118 @@ open System.IO
 open System.Text
 open System.Text.RegularExpressions
 
+let mapFSharpType (typeName:string) =
+    typeName
+        .Replace("float","double")
+        .Replace("seq","IEnumerable")
+
+
+let class_template = """public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.[OBJECT_NAME] Init[OBJECT_NAME][GENERICS]
+        (
+[MANDATORY_PARAMS]
+[OPTIONAL_PARAMS]
+        ) 
+[GENERICS_ANNOTATIONS]
+            Plotly.NET.TraceObjects.[OBJECT_NAME].init(
+[MANDATORY_PARAMS_SETTERS]
+[OPTIONAL_PARAMS_SETTERS]
+            );
+}
+"""
+
 type TraceObjectAbstraction = {
     ObjectName: string
     MandatoryParams: (string*string) list
     OptionalParams: (string*string) list
+    Generics: string list
 } with
-    static member create name m o = 
+    static member create name (m: (string*string) list) (o: (string*string) list) = 
+        
+        let generics =
+            List.concat [m; o]
+            |> List.filter (fun (pName, pType) -> pType.Contains("#IConvertible"))
+            |> List.map fst
+            |> List.map (fun pName -> pName, $"{pName}Type")
+            |> Map.ofList
+
+        let csharpMandatoryParams = 
+            m 
+            |> List.map (fun (pName, pType) -> pName, mapFSharpType pType)
+            |> List.map (fun (pName, pType) -> 
+                pName, 
+                if pType.Contains("#IConvertible") then 
+                    pType.Replace("#IConvertible", generics[pName])
+                else
+                    pType
+            )
+        let csharpOptionalyParams = 
+            o 
+            |> List.map (fun (pName, pType) -> pName, mapFSharpType pType)
+            |> List.map (fun (pName, pType) -> 
+                pName, 
+                if pType.Contains("#IConvertible") then 
+                    pType.Replace("#IConvertible", generics[pName])
+                else
+                    pType
+            )
+
         {
             ObjectName = name
-            MandatoryParams = m
-            OptionalParams = o
+            MandatoryParams = csharpMandatoryParams
+            OptionalParams = csharpOptionalyParams
+            Generics = generics.Values |> List.ofSeq
         }
 
+    static member toClassTemplate (tObj: TraceObjectAbstraction) =
+
+        let mParams =
+            tObj.MandatoryParams
+            |> List.map (fun (pName, pType) -> $"            {pType} {pName}")
+            |> String.concat $",{System.Environment.NewLine}"    
+
+        let mParamSetters =
+            tObj.MandatoryParams
+            |> List.map (fun (pName, _) -> $"                {pName}: {pName}")
+            |> String.concat $",{System.Environment.NewLine}"    
+
+        let optParams =
+            tObj.OptionalParams
+            |> List.map (fun (pName, pType) -> $"            Optional<{pType}> {pName} = default")
+            |> String.concat $",{System.Environment.NewLine}"
+
+        let optParamsSetters =
+            tObj.OptionalParams
+            |> List.map (fun (pName, pType) -> $"                {pName}: {pName}.ToOption()")
+            |> String.concat $",{System.Environment.NewLine}"
+
+        let generics =
+            if tObj.Generics.IsEmpty then
+                $""
+            else
+                let g = tObj.Generics |> String.concat ", "
+                $"<{g}>"
+
+        let genericsAnnotations =
+            if tObj.Generics.IsEmpty then
+                $"{System.Environment.NewLine}            =>"
+            else
+                let g = 
+                    tObj.Generics 
+                    |> List.map (fun generic -> $"            where {generic}: IConvertible")
+                    |> String.concat System.Environment.NewLine
+                $"{g}{System.Environment.NewLine}            =>"
+
+        class_template
+            .Replace("[OBJECT_NAME]", tObj.ObjectName)
+            .Replace("[MANDATORY_PARAMS]", mParams)
+            .Replace("[OPTIONAL_PARAMS]", optParams)
+            .Replace("[MANDATORY_PARAMS_SETTERS]", mParamSetters)
+            .Replace("[OPTIONAL_PARAMS_SETTERS]", optParamsSetters)
+            .Replace("[GENERICS]", generics)
+            .Replace("[GENERICS_ANNOTATIONS]", genericsAnnotations)
+
 let objectNameRegex = new Regex("type (?<objectName>[A-Za-z]*)()")
 
 let getObjectName (str:string) =
@@ -46,9 +146,17 @@ let parseSourceFile (path:string) =
                 else
                     loop rest isFirstObj isInit name [] [] ((TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams)) :: acc)
             
-            | init when init.Trim().StartsWith("static member init") ->
+            | init when init.Trim() = "static member init" ->
                 printfn "is init"
                 loop rest isFirstObj true currentName mParams oParams acc
+
+            | inlineInit when inlineInit.Trim().StartsWith("static member init(") ->
+
+                if inlineInit.Contains("[<Optional; DefaultParameterValue(") then
+                    loop rest isFirstObj isInit currentName mParams ((getOptParam inlineInit) :: oParams) acc
+                else
+                    loop rest isFirstObj isInit currentName ((getParam inlineInit) :: mParams)  oParams acc
+                
             
             | otherMember when otherMember.Trim().StartsWith("static member") ->
                 printfn "is other member"
@@ -79,53 +187,6 @@ let parseSourceFile (path:string) =
 
     loop (File.ReadAllLines path |> List.ofArray) true false "" [] [] []
 
-let class_template = """public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.[OBJECT_NAME] [OBJECT_NAME]
-        (
-[MANDATORY_PARAMS]
-[OPTIONAL_PARAMS]
-        ) => 
-            Plotly.NET.TraceObjects.[OBJECT_NAME].init(
-[MANDATORY_PARAMS_SETTERS]
-[OPTIONAL_PARAMS_SETTERS]
-            );
-}
-"""
-
-let mapFSharpType (typeName:string) =
-    typeName
-        .Replace("float","double")
-        .Replace("seq","IEnumerable")
-
-let populateClassTemplate (tObj: TraceObjectAbstraction) =
-
-    let mParams =
-        tObj.MandatoryParams
-        |> List.map (fun (pName, pType) -> $"            {mapFSharpType pType} {pName}")
-        |> String.concat $",{System.Environment.NewLine}"    
-
-    let mParamSetters =
-        tObj.MandatoryParams
-        |> List.map (fun (pName, _) -> $"                {pName}: {pName}")
-        |> String.concat $",{System.Environment.NewLine}"    
-
-    let optParams =
-        tObj.OptionalParams
-        |> List.map (fun (pName, pType) -> $"            Optional<{mapFSharpType pType}> {pName} = default")
-        |> String.concat $",{System.Environment.NewLine}"
-
-    let optParamsSetters =
-        tObj.OptionalParams
-        |> List.map (fun (pName, pType) -> $"                {pName}: {pName}.ToOption()")
-        |> String.concat $",{System.Environment.NewLine}"
-
-    class_template
-        .Replace("[OBJECT_NAME]",tObj.ObjectName)
-        .Replace("[MANDATORY_PARAMS]",mParams)
-        .Replace("[OPTIONAL_PARAMS]",optParams)
-        .Replace("[MANDATORY_PARAMS_SETTERS]",mParamSetters)
-        .Replace("[OPTIONAL_PARAMS_SETTERS]",optParamsSetters)
 
 let file_template = """
 using Microsoft.FSharp.Core;
@@ -143,13 +204,15 @@ namespace Plotly.NET.CSharp;
 let createCSharpSourceFile (objectAbstractions: TraceObjectAbstraction list) =
     let classes = 
         objectAbstractions 
-        |> List.map populateClassTemplate 
+        |> List.map TraceObjectAbstraction.toClassTemplate 
         |> String.concat System.Environment.NewLine
     
     file_template.Replace("[CLASSES]",classes)
 
 let indicator = parseSourceFile @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\Indicator.fs"
 
+createCSharpSourceFile indicator
+
 let sourceFiles =
     Directory.EnumerateFiles @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\"
     |> Seq.cast<string>

From 3fc79789020cbe6f2527661705c9b35f99decec0 Mon Sep 17 00:00:00 2001
From: Kevin Schneider <schneider.kev@outlook.de>
Date: Mon, 5 Sep 2022 12:50:14 +0200
Subject: [PATCH 3/6] fix table object binding

---
 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
index 6d8d90b5b..676ebd3d8 100644
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
+++ b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/Table.cs
@@ -35,7 +35,7 @@ public static Plotly.NET.TraceObjects.TableCells InitTableCells<ValuesType>
         ) 
             where ValuesType: IConvertible
             =>
-                Plotly.NET.TraceObjects.TableCells.init(
+                Plotly.NET.TraceObjects.TableCells.init<IEnumerable<ValuesType>, ValuesType>(
                     Align: Align.ToOption(),
                     MultiAlign: MultiAlign.ToOption(),
                     Fill: Fill.ToOption(),

From e722a5504a46640a07fa377d3d7214aa878c6705 Mon Sep 17 00:00:00 2001
From: Kevin Schneider <schneider.kev@outlook.de>
Date: Mon, 5 Sep 2022 12:54:06 +0200
Subject: [PATCH 4/6] Add sample usage of trace object bindings

---
 tests/Plotly.NET.Tests.CSharpConsole/Program.cs | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tests/Plotly.NET.Tests.CSharpConsole/Program.cs b/tests/Plotly.NET.Tests.CSharpConsole/Program.cs
index 6a8fc62f8..5c3a9902d 100644
--- a/tests/Plotly.NET.Tests.CSharpConsole/Program.cs
+++ b/tests/Plotly.NET.Tests.CSharpConsole/Program.cs
@@ -740,23 +740,23 @@ static void Main(string[] args)
                         ),
                         Chart.ParallelCoord(
                             dimensions: new Plotly.NET.TraceObjects.Dimension [] {
-                                Plotly.NET.TraceObjects.Dimension.initParallel<string, string, int, int>(Label: "A", Values: new int [] {1, 4, 3}),
-                                Plotly.NET.TraceObjects.Dimension.initParallel<string, string, int, int>(Label: "B", Values: new int [] {3, 1, 2})
+                                TraceObjects.InitParallelDimension<string, string, int>(Label: "A", Values: new int [] {1, 4, 3}),
+                                TraceObjects.InitParallelDimension<string, string, int>(Label: "B", Values: new int [] {3, 1, 2})
                             },
                             Name: "parcoords"
                         ),
                         Chart.ParallelCategories(
                             dimensions: new Plotly.NET.TraceObjects.Dimension [] {
-                                Plotly.NET.TraceObjects.Dimension.initParallel<string, string, int, int>(Label: "A", Values: new int [] {1, 1, 2}),
-                                Plotly.NET.TraceObjects.Dimension.initParallel<string, string, int, int>(Label: "B", Values: new int [] {3, 3, 3})
+                                TraceObjects.InitParallelDimension<string, string, int>(Label: "A", Values: new int [] {1, 1, 2}),
+                                TraceObjects.InitParallelDimension<string, string, int>(Label: "B", Values: new int [] {3, 3, 3})
                             },
                             Name: "parcats"
                         ),
                         Chart.Sankey<string>(
-                            nodes: Plotly.NET.TraceObjects.SankeyNodes.init<string, int [], string, string>(
+                            nodes: TraceObjects.InitSankeyNodes<string, string, string>(
                                 Label: new string [] {"A", "B", "C", "D"}
                             ),
-                            links: Plotly.NET.TraceObjects.SankeyLinks.init<string, int>(
+                            links: TraceObjects.InitSankeyLinks<string, int>(
                                 Source: new int [] {0, 1, 1 },
                                 Target: new int [] {2, 2, 3 },
                                 Value: new int [] {1, 2, 5}

From 727b049c5668399af25fa91fe8c5ccab40d7ca9e Mon Sep 17 00:00:00 2001
From: Kevin Schneider <schneider.kev@outlook.de>
Date: Tue, 6 Sep 2022 18:18:29 +0200
Subject: [PATCH 5/6] Add Reflection-based codegen for core objects

---
 Plotly.NET.sln                                |   9 +
 .../GenericChartExtensions.cs                 |   2 +-
 src/Plotly.NET.CSharp/Layout.cs               | 596 ++++++++++++++++++
 src/Plotly.NET.CSharp/LayoutObjects/Geo.cs    | 146 +++++
 src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs |  54 ++
 src/Plotly.NET.CSharp/LayoutObjects/Polar.cs  |  94 +++
 src/Plotly.NET.CSharp/LayoutObjects/Scene.cs  | 124 ++++
 src/Plotly.NET.CSharp/LayoutObjects/Smith.cs  |  74 +++
 .../LayoutObjects/Ternary.cs                  | 100 +++
 .../TraceObjects/traceobject-codegen.fsx      | 233 -------
 src/Plotly.NET.Codegen/Common.fs              |  45 ++
 src/Plotly.NET.Codegen/CoreObjects.fs         | 144 +++++
 .../Playground/important-objects-codegen.fsx  | 102 +++
 .../Playground/traceobject-codegen.fsx        |  31 +
 .../Plotly.NET.Codegen.fsproj                 |  22 +
 src/Plotly.NET.Codegen/Program.fs             |  42 ++
 src/Plotly.NET.Codegen/TemplateStrings.fs     |  72 +++
 src/Plotly.NET.Codegen/TraceObjects.fs        | 211 +++++++
 18 files changed, 1867 insertions(+), 234 deletions(-)
 create mode 100644 src/Plotly.NET.CSharp/Layout.cs
 create mode 100644 src/Plotly.NET.CSharp/LayoutObjects/Geo.cs
 create mode 100644 src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs
 create mode 100644 src/Plotly.NET.CSharp/LayoutObjects/Polar.cs
 create mode 100644 src/Plotly.NET.CSharp/LayoutObjects/Scene.cs
 create mode 100644 src/Plotly.NET.CSharp/LayoutObjects/Smith.cs
 create mode 100644 src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs
 delete mode 100644 src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
 create mode 100644 src/Plotly.NET.Codegen/Common.fs
 create mode 100644 src/Plotly.NET.Codegen/CoreObjects.fs
 create mode 100644 src/Plotly.NET.Codegen/Playground/important-objects-codegen.fsx
 create mode 100644 src/Plotly.NET.Codegen/Playground/traceobject-codegen.fsx
 create mode 100644 src/Plotly.NET.Codegen/Plotly.NET.Codegen.fsproj
 create mode 100644 src/Plotly.NET.Codegen/Program.fs
 create mode 100644 src/Plotly.NET.Codegen/TemplateStrings.fs
 create mode 100644 src/Plotly.NET.Codegen/TraceObjects.fs

diff --git a/Plotly.NET.sln b/Plotly.NET.sln
index 107e080a2..c30783bb2 100644
--- a/Plotly.NET.sln
+++ b/Plotly.NET.sln
@@ -156,6 +156,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.CSharp.Tests", "
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.Tests.CSharpInteroperability", "tests\Plotly.NET.Tests.CSharpInteroperability\Plotly.NET.Tests.CSharpInteroperability.csproj", "{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}"
 EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.Codegen", "src\Plotly.NET.Codegen\Plotly.NET.Codegen.fsproj", "{92601FE7-4E86-41B7-B61D-5D9EB46733C7}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -229,6 +231,12 @@ Global
 		{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Dotnet|Any CPU.Build.0 = Debug|Any CPU
 		{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7}.Dotnet|Any CPU.Build.0 = Debug|Any CPU
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -248,6 +256,7 @@ Global
 		{F944FE69-F4A5-4B48-8E4D-BE4B61E92B26} = {0E87E47E-9EDC-4525-AF72-F0E139D54236}
 		{4C24BA53-F41C-4110-AD7A-28143DCF671E} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8}
 		{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8}
+		{92601FE7-4E86-41B7-B61D-5D9EB46733C7} = {0E87E47E-9EDC-4525-AF72-F0E139D54236}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {7177F1E1-341C-48AB-9864-6B525FFF7633}
diff --git a/src/Plotly.NET.CSharp/GenericChartExtensions.cs b/src/Plotly.NET.CSharp/GenericChartExtensions.cs
index 033e82b40..cad9fa8f2 100644
--- a/src/Plotly.NET.CSharp/GenericChartExtensions.cs
+++ b/src/Plotly.NET.CSharp/GenericChartExtensions.cs
@@ -14,7 +14,7 @@ public static class GenericChartExtensions
         /// Returns the layout of the given chart
         /// </summary>
         /// <param name="gChart">The chart of which to get the layout</param>
-        public static Layout GetLayout(this GenericChart.GenericChart gChart) => GenericChart.getLayout(gChart);
+        public static Plotly.NET.Layout GetLayout(this GenericChart.GenericChart gChart) => GenericChart.getLayout(gChart);
 
         /// <summary>
         /// Returns all traces of the given chart as an array
diff --git a/src/Plotly.NET.CSharp/Layout.cs b/src/Plotly.NET.CSharp/Layout.cs
new file mode 100644
index 000000000..98b5454cd
--- /dev/null
+++ b/src/Plotly.NET.CSharp/Layout.cs
@@ -0,0 +1,596 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp;
+
+public static class Layout {
+    public static Plotly.NET.Layout Init<a>(
+        Optional<Plotly.NET.Title> Title = default,
+        Optional<System.Boolean> ShowLegend = default,
+        Optional<Plotly.NET.LayoutObjects.Legend> Legend = default,
+        Optional<Plotly.NET.LayoutObjects.Margin> Margin = default,
+        Optional<System.Boolean> AutoSize = default,
+        Optional<System.Int32> Width = default,
+        Optional<System.Int32> Height = default,
+        Optional<Plotly.NET.Font> Font = default,
+        Optional<Plotly.NET.LayoutObjects.UniformText> UniformText = default,
+        Optional<System.String> Separators = default,
+        Optional<Plotly.NET.Color> PaperBGColor = default,
+        Optional<Plotly.NET.Color> PlotBGColor = default,
+        Optional<Plotly.NET.StyleParam.AutoTypeNumbers> AutoTypeNumbers = default,
+        Optional<Plotly.NET.LayoutObjects.DefaultColorScales> Colorscale = default,
+        Optional<Plotly.NET.Color> Colorway = default,
+        Optional<Plotly.NET.LayoutObjects.ModeBar> ModeBar = default,
+        Optional<Plotly.NET.StyleParam.HoverMode> HoverMode = default,
+        Optional<Plotly.NET.StyleParam.ClickMode> ClickMode = default,
+        Optional<Plotly.NET.StyleParam.DragMode> DragMode = default,
+        Optional<Plotly.NET.StyleParam.SelectDirection> SelectDirection = default,
+        Optional<System.Int32> HoverDistance = default,
+        Optional<System.Int32> SpikeDistance = default,
+        Optional<Plotly.NET.LayoutObjects.Hoverlabel> Hoverlabel = default,
+        Optional<Plotly.NET.LayoutObjects.Transition> Transition = default,
+        Optional<System.String> DataRevision = default,
+        Optional<System.String> UIRevision = default,
+        Optional<System.String> EditRevision = default,
+        Optional<System.String> SelectRevision = default,
+        Optional<DynamicObj.DynamicObj> Template = default,
+        Optional<System.String> Meta = default,
+        Optional<System.String> Computed = default,
+        Optional<Plotly.NET.LayoutObjects.LayoutGrid> Grid = default,
+        Optional<Plotly.NET.StyleParam.Calendar> Calendar = default,
+        Optional<Plotly.NET.LayoutObjects.Shape> NewShape = default,
+        Optional<Plotly.NET.LayoutObjects.ActiveShape> ActiveShape = default,
+        Optional<System.Boolean> HideSources = default,
+        Optional<System.Double> BarGap = default,
+        Optional<System.Double> BarGroupGap = default,
+        Optional<Plotly.NET.StyleParam.BarMode> BarMode = default,
+        Optional<Plotly.NET.StyleParam.BarNorm> BarNorm = default,
+        Optional<System.Boolean> ExtendPieColors = default,
+        Optional<System.Collections.Generic.IEnumerable<a>> HiddenLabels = default,
+        Optional<Plotly.NET.Color> PieColorWay = default,
+        Optional<System.Double> BoxGap = default,
+        Optional<System.Double> BoxGroupGap = default,
+        Optional<Plotly.NET.StyleParam.BoxMode> BoxMode = default,
+        Optional<System.Double> ViolinGap = default,
+        Optional<System.Double> ViolinGroupGap = default,
+        Optional<Plotly.NET.StyleParam.ViolinMode> ViolinMode = default,
+        Optional<System.Double> WaterfallGap = default,
+        Optional<System.Double> WaterfallGroupGap = default,
+        Optional<Plotly.NET.StyleParam.WaterfallMode> WaterfallMode = default,
+        Optional<System.Double> FunnelGap = default,
+        Optional<System.Double> FunnelGroupGap = default,
+        Optional<Plotly.NET.StyleParam.FunnelMode> FunnelMode = default,
+        Optional<System.Boolean> ExtendFunnelAreaColors = default,
+        Optional<Plotly.NET.Color> FunnelAreaColorWay = default,
+        Optional<System.Boolean> ExtendSunBurstColors = default,
+        Optional<Plotly.NET.Color> SunBurstColorWay = default,
+        Optional<System.Boolean> ExtendTreeMapColors = default,
+        Optional<Plotly.NET.Color> TreeMapColorWay = default,
+        Optional<System.Boolean> ExtendIcicleColors = default,
+        Optional<Plotly.NET.Color> IcicleColorWay = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Annotation>> Annotations = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Shape>> Shapes = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.LayoutImage>> Images = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Slider>> Sliders = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.UpdateMenu>> UpdateMenus = default
+    )
+        where a: System.IConvertible
+        =>
+            Plotly.NET.Layout.init<a>(
+                Title: Title.ToOption(),
+                ShowLegend: ShowLegend.ToOption(),
+                Legend: Legend.ToOption(),
+                Margin: Margin.ToOption(),
+                AutoSize: AutoSize.ToOption(),
+                Width: Width.ToOption(),
+                Height: Height.ToOption(),
+                Font: Font.ToOption(),
+                UniformText: UniformText.ToOption(),
+                Separators: Separators.ToOption(),
+                PaperBGColor: PaperBGColor.ToOption(),
+                PlotBGColor: PlotBGColor.ToOption(),
+                AutoTypeNumbers: AutoTypeNumbers.ToOption(),
+                Colorscale: Colorscale.ToOption(),
+                Colorway: Colorway.ToOption(),
+                ModeBar: ModeBar.ToOption(),
+                HoverMode: HoverMode.ToOption(),
+                ClickMode: ClickMode.ToOption(),
+                DragMode: DragMode.ToOption(),
+                SelectDirection: SelectDirection.ToOption(),
+                HoverDistance: HoverDistance.ToOption(),
+                SpikeDistance: SpikeDistance.ToOption(),
+                Hoverlabel: Hoverlabel.ToOption(),
+                Transition: Transition.ToOption(),
+                DataRevision: DataRevision.ToOption(),
+                UIRevision: UIRevision.ToOption(),
+                EditRevision: EditRevision.ToOption(),
+                SelectRevision: SelectRevision.ToOption(),
+                Template: Template.ToOption(),
+                Meta: Meta.ToOption(),
+                Computed: Computed.ToOption(),
+                Grid: Grid.ToOption(),
+                Calendar: Calendar.ToOption(),
+                NewShape: NewShape.ToOption(),
+                ActiveShape: ActiveShape.ToOption(),
+                HideSources: HideSources.ToOption(),
+                BarGap: BarGap.ToOption(),
+                BarGroupGap: BarGroupGap.ToOption(),
+                BarMode: BarMode.ToOption(),
+                BarNorm: BarNorm.ToOption(),
+                ExtendPieColors: ExtendPieColors.ToOption(),
+                HiddenLabels: HiddenLabels.ToOption(),
+                PieColorWay: PieColorWay.ToOption(),
+                BoxGap: BoxGap.ToOption(),
+                BoxGroupGap: BoxGroupGap.ToOption(),
+                BoxMode: BoxMode.ToOption(),
+                ViolinGap: ViolinGap.ToOption(),
+                ViolinGroupGap: ViolinGroupGap.ToOption(),
+                ViolinMode: ViolinMode.ToOption(),
+                WaterfallGap: WaterfallGap.ToOption(),
+                WaterfallGroupGap: WaterfallGroupGap.ToOption(),
+                WaterfallMode: WaterfallMode.ToOption(),
+                FunnelGap: FunnelGap.ToOption(),
+                FunnelGroupGap: FunnelGroupGap.ToOption(),
+                FunnelMode: FunnelMode.ToOption(),
+                ExtendFunnelAreaColors: ExtendFunnelAreaColors.ToOption(),
+                FunnelAreaColorWay: FunnelAreaColorWay.ToOption(),
+                ExtendSunBurstColors: ExtendSunBurstColors.ToOption(),
+                SunBurstColorWay: SunBurstColorWay.ToOption(),
+                ExtendTreeMapColors: ExtendTreeMapColors.ToOption(),
+                TreeMapColorWay: TreeMapColorWay.ToOption(),
+                ExtendIcicleColors: ExtendIcicleColors.ToOption(),
+                IcicleColorWay: IcicleColorWay.ToOption(),
+                Annotations: Annotations.ToOption(),
+                Shapes: Shapes.ToOption(),
+                Images: Images.ToOption(),
+                Sliders: Sliders.ToOption(),
+                UpdateMenus: UpdateMenus.ToOption()
+            );
+    public static Plotly.NET.Layout Style<a>(
+        this Plotly.NET.Layout obj,
+        Optional<Plotly.NET.Title> Title = default,
+        Optional<System.Boolean> ShowLegend = default,
+        Optional<Plotly.NET.LayoutObjects.Legend> Legend = default,
+        Optional<Plotly.NET.LayoutObjects.Margin> Margin = default,
+        Optional<System.Boolean> AutoSize = default,
+        Optional<System.Int32> Width = default,
+        Optional<System.Int32> Height = default,
+        Optional<Plotly.NET.Font> Font = default,
+        Optional<Plotly.NET.LayoutObjects.UniformText> UniformText = default,
+        Optional<System.String> Separators = default,
+        Optional<Plotly.NET.Color> PaperBGColor = default,
+        Optional<Plotly.NET.Color> PlotBGColor = default,
+        Optional<Plotly.NET.StyleParam.AutoTypeNumbers> AutoTypeNumbers = default,
+        Optional<Plotly.NET.LayoutObjects.DefaultColorScales> Colorscale = default,
+        Optional<Plotly.NET.Color> Colorway = default,
+        Optional<Plotly.NET.LayoutObjects.ModeBar> ModeBar = default,
+        Optional<Plotly.NET.StyleParam.HoverMode> HoverMode = default,
+        Optional<Plotly.NET.StyleParam.ClickMode> ClickMode = default,
+        Optional<Plotly.NET.StyleParam.DragMode> DragMode = default,
+        Optional<Plotly.NET.StyleParam.SelectDirection> SelectDirection = default,
+        Optional<System.Int32> HoverDistance = default,
+        Optional<System.Int32> SpikeDistance = default,
+        Optional<Plotly.NET.LayoutObjects.Hoverlabel> Hoverlabel = default,
+        Optional<Plotly.NET.LayoutObjects.Transition> Transition = default,
+        Optional<System.String> DataRevision = default,
+        Optional<System.String> UIRevision = default,
+        Optional<System.String> EditRevision = default,
+        Optional<System.String> SelectRevision = default,
+        Optional<DynamicObj.DynamicObj> Template = default,
+        Optional<System.String> Meta = default,
+        Optional<System.String> Computed = default,
+        Optional<Plotly.NET.LayoutObjects.LayoutGrid> Grid = default,
+        Optional<Plotly.NET.StyleParam.Calendar> Calendar = default,
+        Optional<Plotly.NET.LayoutObjects.Shape> NewShape = default,
+        Optional<Plotly.NET.LayoutObjects.ActiveShape> ActiveShape = default,
+        Optional<System.Boolean> HideSources = default,
+        Optional<System.Double> BarGap = default,
+        Optional<System.Double> BarGroupGap = default,
+        Optional<Plotly.NET.StyleParam.BarMode> BarMode = default,
+        Optional<Plotly.NET.StyleParam.BarNorm> BarNorm = default,
+        Optional<System.Boolean> ExtendPieColors = default,
+        Optional<System.Collections.Generic.IEnumerable<a>> HiddenLabels = default,
+        Optional<Plotly.NET.Color> PieColorWay = default,
+        Optional<System.Double> BoxGap = default,
+        Optional<System.Double> BoxGroupGap = default,
+        Optional<Plotly.NET.StyleParam.BoxMode> BoxMode = default,
+        Optional<System.Double> ViolinGap = default,
+        Optional<System.Double> ViolinGroupGap = default,
+        Optional<Plotly.NET.StyleParam.ViolinMode> ViolinMode = default,
+        Optional<System.Double> WaterfallGap = default,
+        Optional<System.Double> WaterfallGroupGap = default,
+        Optional<Plotly.NET.StyleParam.WaterfallMode> WaterfallMode = default,
+        Optional<System.Double> FunnelGap = default,
+        Optional<System.Double> FunnelGroupGap = default,
+        Optional<Plotly.NET.StyleParam.FunnelMode> FunnelMode = default,
+        Optional<System.Boolean> ExtendFunnelAreaColors = default,
+        Optional<Plotly.NET.Color> FunnelAreaColorWay = default,
+        Optional<System.Boolean> ExtendSunBurstColors = default,
+        Optional<Plotly.NET.Color> SunBurstColorWay = default,
+        Optional<System.Boolean> ExtendTreeMapColors = default,
+        Optional<Plotly.NET.Color> TreeMapColorWay = default,
+        Optional<System.Boolean> ExtendIcicleColors = default,
+        Optional<Plotly.NET.Color> IcicleColorWay = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Annotation>> Annotations = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Shape>> Shapes = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.LayoutImage>> Images = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Slider>> Sliders = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.UpdateMenu>> UpdateMenus = default
+    )
+        where a: System.IConvertible
+        =>
+            Plotly.NET.Layout.style<a>(
+                Title: Title.ToOption(),
+                ShowLegend: ShowLegend.ToOption(),
+                Legend: Legend.ToOption(),
+                Margin: Margin.ToOption(),
+                AutoSize: AutoSize.ToOption(),
+                Width: Width.ToOption(),
+                Height: Height.ToOption(),
+                Font: Font.ToOption(),
+                UniformText: UniformText.ToOption(),
+                Separators: Separators.ToOption(),
+                PaperBGColor: PaperBGColor.ToOption(),
+                PlotBGColor: PlotBGColor.ToOption(),
+                AutoTypeNumbers: AutoTypeNumbers.ToOption(),
+                Colorscale: Colorscale.ToOption(),
+                Colorway: Colorway.ToOption(),
+                ModeBar: ModeBar.ToOption(),
+                HoverMode: HoverMode.ToOption(),
+                ClickMode: ClickMode.ToOption(),
+                DragMode: DragMode.ToOption(),
+                SelectDirection: SelectDirection.ToOption(),
+                HoverDistance: HoverDistance.ToOption(),
+                SpikeDistance: SpikeDistance.ToOption(),
+                Hoverlabel: Hoverlabel.ToOption(),
+                Transition: Transition.ToOption(),
+                DataRevision: DataRevision.ToOption(),
+                UIRevision: UIRevision.ToOption(),
+                EditRevision: EditRevision.ToOption(),
+                SelectRevision: SelectRevision.ToOption(),
+                Template: Template.ToOption(),
+                Meta: Meta.ToOption(),
+                Computed: Computed.ToOption(),
+                Grid: Grid.ToOption(),
+                Calendar: Calendar.ToOption(),
+                NewShape: NewShape.ToOption(),
+                ActiveShape: ActiveShape.ToOption(),
+                HideSources: HideSources.ToOption(),
+                BarGap: BarGap.ToOption(),
+                BarGroupGap: BarGroupGap.ToOption(),
+                BarMode: BarMode.ToOption(),
+                BarNorm: BarNorm.ToOption(),
+                ExtendPieColors: ExtendPieColors.ToOption(),
+                HiddenLabels: HiddenLabels.ToOption(),
+                PieColorWay: PieColorWay.ToOption(),
+                BoxGap: BoxGap.ToOption(),
+                BoxGroupGap: BoxGroupGap.ToOption(),
+                BoxMode: BoxMode.ToOption(),
+                ViolinGap: ViolinGap.ToOption(),
+                ViolinGroupGap: ViolinGroupGap.ToOption(),
+                ViolinMode: ViolinMode.ToOption(),
+                WaterfallGap: WaterfallGap.ToOption(),
+                WaterfallGroupGap: WaterfallGroupGap.ToOption(),
+                WaterfallMode: WaterfallMode.ToOption(),
+                FunnelGap: FunnelGap.ToOption(),
+                FunnelGroupGap: FunnelGroupGap.ToOption(),
+                FunnelMode: FunnelMode.ToOption(),
+                ExtendFunnelAreaColors: ExtendFunnelAreaColors.ToOption(),
+                FunnelAreaColorWay: FunnelAreaColorWay.ToOption(),
+                ExtendSunBurstColors: ExtendSunBurstColors.ToOption(),
+                SunBurstColorWay: SunBurstColorWay.ToOption(),
+                ExtendTreeMapColors: ExtendTreeMapColors.ToOption(),
+                TreeMapColorWay: TreeMapColorWay.ToOption(),
+                ExtendIcicleColors: ExtendIcicleColors.ToOption(),
+                IcicleColorWay: IcicleColorWay.ToOption(),
+                Annotations: Annotations.ToOption(),
+                Shapes: Shapes.ToOption(),
+                Images: Images.ToOption(),
+                Sliders: Sliders.ToOption(),
+                UpdateMenus: UpdateMenus.ToOption()
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateLinearAxisById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.LinearAxis axis
+    )
+
+        =>
+            Plotly.NET.Layout.updateLinearAxisById(
+                id: id,
+                axis: axis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetLinearAxisById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getLinearAxisById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetLinearAxis(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.LinearAxis axis
+    )
+
+        =>
+            Plotly.NET.Layout.setLinearAxis(
+                id: id,
+                axis: axis
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateSceneById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Scene scene
+    )
+
+        =>
+            Plotly.NET.Layout.updateSceneById(
+                id: id,
+                scene: scene
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Scene GetSceneById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getSceneById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetScene(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Scene scene
+    )
+
+        =>
+            Plotly.NET.Layout.setScene(
+                id: id,
+                scene: scene
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateGeoById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Geo geo
+    )
+
+        =>
+            Plotly.NET.Layout.updateGeoById(
+                id: id,
+                geo: geo
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Geo GetGeoById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getGeoById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetGeo(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Geo geo
+    )
+
+        =>
+            Plotly.NET.Layout.setGeo(
+                id: id,
+                geo: geo
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateMapboxById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Mapbox mapbox
+    )
+
+        =>
+            Plotly.NET.Layout.updateMapboxById(
+                id: id,
+                mapbox: mapbox
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Mapbox GetMapboxById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getMapboxById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetMapbox(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Mapbox mapbox
+    )
+
+        =>
+            Plotly.NET.Layout.setMapbox(
+                id: id,
+                mapbox: mapbox
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdatePolarById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Polar polar
+    )
+
+        =>
+            Plotly.NET.Layout.updatePolarById(
+                id: id,
+                polar: polar
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Polar GetPolarById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getPolarById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetPolar(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Polar polar
+    )
+
+        =>
+            Plotly.NET.Layout.setPolar(
+                id: id,
+                polar: polar
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateSmithById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Smith smith
+    )
+
+        =>
+            Plotly.NET.Layout.updateSmithById(
+                id: id,
+                smith: smith
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Smith GetSmithById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getSmithById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetSmith(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Smith smith
+    )
+
+        =>
+            Plotly.NET.Layout.setSmith(
+                id: id,
+                smith: smith
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateColorAxisById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.ColorAxis colorAxis
+    )
+
+        =>
+            Plotly.NET.Layout.updateColorAxisById(
+                id: id,
+                colorAxis: colorAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.ColorAxis GetColorAxisById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getColorAxisById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetColorAxis(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.ColorAxis colorAxis
+    )
+
+        =>
+            Plotly.NET.Layout.setColorAxis(
+                id: id,
+                colorAxis: colorAxis
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateTernaryById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Ternary ternary
+    )
+
+        =>
+            Plotly.NET.Layout.updateTernaryById(
+                id: id,
+                ternary: ternary
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Ternary GetTernaryById(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id
+    )
+
+        =>
+            Plotly.NET.Layout.getTernaryById(
+                id: id
+            ).Invoke(obj);
+    public static Plotly.NET.Layout SetTernary(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.StyleParam.SubPlotId id,
+        Plotly.NET.LayoutObjects.Ternary ternary
+    )
+
+        =>
+            Plotly.NET.Layout.setTernary(
+                id: id,
+                ternary: ternary
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LayoutGrid GetLayoutGrid(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.Layout layout
+    )
+
+        =>
+            Plotly.NET.Layout.getLayoutGrid(
+                layout: layout
+            );
+    public static Plotly.NET.Layout SetLayoutGrid(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.LayoutObjects.LayoutGrid layoutGrid
+    )
+
+        =>
+            Plotly.NET.Layout.setLayoutGrid(
+                layoutGrid: layoutGrid
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateLayoutGrid(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.LayoutObjects.LayoutGrid layoutGrid
+    )
+
+        =>
+            Plotly.NET.Layout.updateLayoutGrid(
+                layoutGrid: layoutGrid
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.Legend GetLegend(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.Layout layout
+    )
+
+        =>
+            Plotly.NET.Layout.getLegend(
+                layout: layout
+            );
+    public static Plotly.NET.Layout SetLegend(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.LayoutObjects.Legend legend
+    )
+
+        =>
+            Plotly.NET.Layout.setLegend(
+                legend: legend
+            ).Invoke(obj);
+    public static Plotly.NET.Layout UpdateLegend(
+        this Plotly.NET.Layout obj,
+        Plotly.NET.LayoutObjects.Legend legend
+    )
+
+        =>
+            Plotly.NET.Layout.updateLegend(
+                legend: legend
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs b/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs
new file mode 100644
index 000000000..c6cb0c39a
--- /dev/null
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs
@@ -0,0 +1,146 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp.LayoutObjects;
+
+public static class Geo {
+    public static Plotly.NET.LayoutObjects.Geo Init(
+        Optional<Plotly.NET.StyleParam.GeoFitBounds> FitBounds = default,
+        Optional<Plotly.NET.StyleParam.GeoResolution> Resolution = default,
+        Optional<Plotly.NET.StyleParam.GeoScope> Scope = default,
+        Optional<Plotly.NET.LayoutObjects.GeoProjection> Projection = default,
+        Optional<System.Tuple<System.Double,System.Double>> Center = default,
+        Optional<System.Boolean> Visible = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<System.Boolean> ShowCoastLines = default,
+        Optional<Plotly.NET.Color> CoastLineColor = default,
+        Optional<System.Double> CoastLineWidth = default,
+        Optional<System.Boolean> ShowLand = default,
+        Optional<Plotly.NET.Color> LandColor = default,
+        Optional<System.Boolean> ShowOcean = default,
+        Optional<Plotly.NET.Color> OceanColor = default,
+        Optional<System.Boolean> ShowLakes = default,
+        Optional<Plotly.NET.Color> LakeColor = default,
+        Optional<System.Boolean> ShowRivers = default,
+        Optional<Plotly.NET.Color> RiverColor = default,
+        Optional<System.Double> RiverWidth = default,
+        Optional<System.Boolean> ShowCountries = default,
+        Optional<Plotly.NET.Color> CountryColor = default,
+        Optional<System.Double> CountryWidth = default,
+        Optional<System.Boolean> ShowSubunits = default,
+        Optional<Plotly.NET.Color> SubunitColor = default,
+        Optional<System.Double> SubunitWidth = default,
+        Optional<System.Boolean> ShowFrame = default,
+        Optional<Plotly.NET.Color> FrameColor = default,
+        Optional<System.Double> FrameWidth = default,
+        Optional<Plotly.NET.Color> BgColor = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> LatAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> LonAxis = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Geo.init(
+                FitBounds: FitBounds.ToOption(),
+                Resolution: Resolution.ToOption(),
+                Scope: Scope.ToOption(),
+                Projection: Projection.ToOption(),
+                Center: Center.ToOption(),
+                Visible: Visible.ToOption(),
+                Domain: Domain.ToOption(),
+                ShowCoastLines: ShowCoastLines.ToOption(),
+                CoastLineColor: CoastLineColor.ToOption(),
+                CoastLineWidth: CoastLineWidth.ToOption(),
+                ShowLand: ShowLand.ToOption(),
+                LandColor: LandColor.ToOption(),
+                ShowOcean: ShowOcean.ToOption(),
+                OceanColor: OceanColor.ToOption(),
+                ShowLakes: ShowLakes.ToOption(),
+                LakeColor: LakeColor.ToOption(),
+                ShowRivers: ShowRivers.ToOption(),
+                RiverColor: RiverColor.ToOption(),
+                RiverWidth: RiverWidth.ToOption(),
+                ShowCountries: ShowCountries.ToOption(),
+                CountryColor: CountryColor.ToOption(),
+                CountryWidth: CountryWidth.ToOption(),
+                ShowSubunits: ShowSubunits.ToOption(),
+                SubunitColor: SubunitColor.ToOption(),
+                SubunitWidth: SubunitWidth.ToOption(),
+                ShowFrame: ShowFrame.ToOption(),
+                FrameColor: FrameColor.ToOption(),
+                FrameWidth: FrameWidth.ToOption(),
+                BgColor: BgColor.ToOption(),
+                LatAxis: LatAxis.ToOption(),
+                LonAxis: LonAxis.ToOption()
+            );
+    public static Plotly.NET.LayoutObjects.Geo Style(
+        this Plotly.NET.LayoutObjects.Geo obj,
+        Optional<Plotly.NET.StyleParam.GeoFitBounds> FitBounds = default,
+        Optional<Plotly.NET.StyleParam.GeoResolution> Resolution = default,
+        Optional<Plotly.NET.StyleParam.GeoScope> Scope = default,
+        Optional<Plotly.NET.LayoutObjects.GeoProjection> Projection = default,
+        Optional<System.Tuple<System.Double,System.Double>> Center = default,
+        Optional<System.Boolean> Visible = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<System.Boolean> ShowCoastLines = default,
+        Optional<Plotly.NET.Color> CoastLineColor = default,
+        Optional<System.Double> CoastLineWidth = default,
+        Optional<System.Boolean> ShowLand = default,
+        Optional<Plotly.NET.Color> LandColor = default,
+        Optional<System.Boolean> ShowOcean = default,
+        Optional<Plotly.NET.Color> OceanColor = default,
+        Optional<System.Boolean> ShowLakes = default,
+        Optional<Plotly.NET.Color> LakeColor = default,
+        Optional<System.Boolean> ShowRivers = default,
+        Optional<Plotly.NET.Color> RiverColor = default,
+        Optional<System.Double> RiverWidth = default,
+        Optional<System.Boolean> ShowCountries = default,
+        Optional<Plotly.NET.Color> CountryColor = default,
+        Optional<System.Double> CountryWidth = default,
+        Optional<System.Boolean> ShowSubunits = default,
+        Optional<Plotly.NET.Color> SubunitColor = default,
+        Optional<System.Double> SubunitWidth = default,
+        Optional<System.Boolean> ShowFrame = default,
+        Optional<Plotly.NET.Color> FrameColor = default,
+        Optional<System.Double> FrameWidth = default,
+        Optional<Plotly.NET.Color> BgColor = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> LatAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> LonAxis = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Geo.style(
+                FitBounds: FitBounds.ToOption(),
+                Resolution: Resolution.ToOption(),
+                Scope: Scope.ToOption(),
+                Projection: Projection.ToOption(),
+                Center: Center.ToOption(),
+                Visible: Visible.ToOption(),
+                Domain: Domain.ToOption(),
+                ShowCoastLines: ShowCoastLines.ToOption(),
+                CoastLineColor: CoastLineColor.ToOption(),
+                CoastLineWidth: CoastLineWidth.ToOption(),
+                ShowLand: ShowLand.ToOption(),
+                LandColor: LandColor.ToOption(),
+                ShowOcean: ShowOcean.ToOption(),
+                OceanColor: OceanColor.ToOption(),
+                ShowLakes: ShowLakes.ToOption(),
+                LakeColor: LakeColor.ToOption(),
+                ShowRivers: ShowRivers.ToOption(),
+                RiverColor: RiverColor.ToOption(),
+                RiverWidth: RiverWidth.ToOption(),
+                ShowCountries: ShowCountries.ToOption(),
+                CountryColor: CountryColor.ToOption(),
+                CountryWidth: CountryWidth.ToOption(),
+                ShowSubunits: ShowSubunits.ToOption(),
+                SubunitColor: SubunitColor.ToOption(),
+                SubunitWidth: SubunitWidth.ToOption(),
+                ShowFrame: ShowFrame.ToOption(),
+                FrameColor: FrameColor.ToOption(),
+                FrameWidth: FrameWidth.ToOption(),
+                BgColor: BgColor.ToOption(),
+                LatAxis: LatAxis.ToOption(),
+                LonAxis: LonAxis.ToOption()
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs b/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs
new file mode 100644
index 000000000..c6ee653bf
--- /dev/null
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs
@@ -0,0 +1,54 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp.LayoutObjects;
+
+public static class Mapbox {
+    public static Plotly.NET.LayoutObjects.Mapbox Init(
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<System.String> AccessToken = default,
+        Optional<Plotly.NET.StyleParam.MapboxStyle> Style = default,
+        Optional<System.Tuple<System.Double,System.Double>> Center = default,
+        Optional<System.Double> Zoom = default,
+        Optional<System.Double> Bearing = default,
+        Optional<System.Double> Pitch = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.MapboxLayer>> Layers = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Mapbox.init(
+                Domain: Domain.ToOption(),
+                AccessToken: AccessToken.ToOption(),
+                Style: Style.ToOption(),
+                Center: Center.ToOption(),
+                Zoom: Zoom.ToOption(),
+                Bearing: Bearing.ToOption(),
+                Pitch: Pitch.ToOption(),
+                Layers: Layers.ToOption()
+            );
+    public static Plotly.NET.LayoutObjects.Mapbox Style(
+        this Plotly.NET.LayoutObjects.Mapbox obj,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<System.String> AccessToken = default,
+        Optional<Plotly.NET.StyleParam.MapboxStyle> Style = default,
+        Optional<System.Tuple<System.Double,System.Double>> Center = default,
+        Optional<System.Double> Zoom = default,
+        Optional<System.Double> Bearing = default,
+        Optional<System.Double> Pitch = default,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.MapboxLayer>> Layers = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Mapbox.style(
+                Domain: Domain.ToOption(),
+                AccessToken: AccessToken.ToOption(),
+                Style: Style.ToOption(),
+                Center: Center.ToOption(),
+                Zoom: Zoom.ToOption(),
+                Bearing: Bearing.ToOption(),
+                Pitch: Pitch.ToOption(),
+                Layers: Layers.ToOption()
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs b/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs
new file mode 100644
index 000000000..a160e6a43
--- /dev/null
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs
@@ -0,0 +1,94 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp.LayoutObjects;
+
+public static class Polar {
+    public static Plotly.NET.LayoutObjects.Polar Init(
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<System.Tuple<System.Double,System.Double>> Sector = default,
+        Optional<System.Double> Hole = default,
+        Optional<Plotly.NET.Color> BGColor = default,
+        Optional<Plotly.NET.LayoutObjects.RadialAxis> RadialAxis = default,
+        Optional<Plotly.NET.LayoutObjects.AngularAxis> AngularAxis = default,
+        Optional<Plotly.NET.StyleParam.PolarGridShape> GridShape = default,
+        Optional<System.String> UIRevision = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Polar.init(
+                Domain: Domain.ToOption(),
+                Sector: Sector.ToOption(),
+                Hole: Hole.ToOption(),
+                BGColor: BGColor.ToOption(),
+                RadialAxis: RadialAxis.ToOption(),
+                AngularAxis: AngularAxis.ToOption(),
+                GridShape: GridShape.ToOption(),
+                UIRevision: UIRevision.ToOption()
+            );
+    public static Plotly.NET.LayoutObjects.Polar Style(
+        this Plotly.NET.LayoutObjects.Polar obj,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<System.Tuple<System.Double,System.Double>> Sector = default,
+        Optional<System.Double> Hole = default,
+        Optional<Plotly.NET.Color> BGColor = default,
+        Optional<Plotly.NET.LayoutObjects.RadialAxis> RadialAxis = default,
+        Optional<Plotly.NET.LayoutObjects.AngularAxis> AngularAxis = default,
+        Optional<Plotly.NET.StyleParam.PolarGridShape> GridShape = default,
+        Optional<System.String> UIRevision = default,
+        Optional<Plotly.NET.StyleParam.BarMode> BarMode = default,
+        Optional<System.Double> BarGap = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Polar.style(
+                Domain: Domain.ToOption(),
+                Sector: Sector.ToOption(),
+                Hole: Hole.ToOption(),
+                BGColor: BGColor.ToOption(),
+                RadialAxis: RadialAxis.ToOption(),
+                AngularAxis: AngularAxis.ToOption(),
+                GridShape: GridShape.ToOption(),
+                UIRevision: UIRevision.ToOption(),
+                BarMode: BarMode.ToOption(),
+                BarGap: BarGap.ToOption()
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.AngularAxis GetAngularAxis(
+        this Plotly.NET.LayoutObjects.Polar obj,
+        Plotly.NET.LayoutObjects.Polar polar
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Polar.getAngularAxis(
+                polar: polar
+            );
+    public static Plotly.NET.LayoutObjects.Polar SetAngularAxis(
+        this Plotly.NET.LayoutObjects.Polar obj,
+        Plotly.NET.LayoutObjects.AngularAxis angularAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Polar.setAngularAxis(
+                angularAxis: angularAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.RadialAxis GetRadialAxis(
+        this Plotly.NET.LayoutObjects.Polar obj,
+        Plotly.NET.LayoutObjects.Polar polar
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Polar.getRadialAxis(
+                polar: polar
+            );
+    public static Plotly.NET.LayoutObjects.Polar SetRadialAxis(
+        this Plotly.NET.LayoutObjects.Polar obj,
+        Plotly.NET.LayoutObjects.RadialAxis radialAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Polar.setRadialAxis(
+                radialAxis: radialAxis
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs b/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs
new file mode 100644
index 000000000..1b2850253
--- /dev/null
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs
@@ -0,0 +1,124 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp.LayoutObjects;
+
+public static class Scene {
+    public static Plotly.NET.LayoutObjects.Scene Init(
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Annotation>> Annotations = default,
+        Optional<Plotly.NET.StyleParam.AspectMode> AspectMode = default,
+        Optional<Plotly.NET.LayoutObjects.AspectRatio> AspectRatio = default,
+        Optional<Plotly.NET.Color> BGColor = default,
+        Optional<Plotly.NET.LayoutObjects.Camera> Camera = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<Plotly.NET.StyleParam.DragMode> DragMode = default,
+        Optional<Plotly.NET.StyleParam.HoverMode> HoverMode = default,
+        Optional<System.String> UIRevision = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> XAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> YAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> ZAxis = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.init(
+                Annotations: Annotations.ToOption(),
+                AspectMode: AspectMode.ToOption(),
+                AspectRatio: AspectRatio.ToOption(),
+                BGColor: BGColor.ToOption(),
+                Camera: Camera.ToOption(),
+                Domain: Domain.ToOption(),
+                DragMode: DragMode.ToOption(),
+                HoverMode: HoverMode.ToOption(),
+                UIRevision: UIRevision.ToOption(),
+                XAxis: XAxis.ToOption(),
+                YAxis: YAxis.ToOption(),
+                ZAxis: ZAxis.ToOption()
+            );
+    public static Plotly.NET.LayoutObjects.Scene Style(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Optional<System.Collections.Generic.IEnumerable<Plotly.NET.LayoutObjects.Annotation>> Annotations = default,
+        Optional<Plotly.NET.StyleParam.AspectMode> AspectMode = default,
+        Optional<Plotly.NET.LayoutObjects.AspectRatio> AspectRatio = default,
+        Optional<Plotly.NET.Color> BGColor = default,
+        Optional<Plotly.NET.LayoutObjects.Camera> Camera = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<Plotly.NET.StyleParam.DragMode> DragMode = default,
+        Optional<Plotly.NET.StyleParam.HoverMode> HoverMode = default,
+        Optional<System.String> UIRevision = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> XAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> YAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> ZAxis = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.style(
+                Annotations: Annotations.ToOption(),
+                AspectMode: AspectMode.ToOption(),
+                AspectRatio: AspectRatio.ToOption(),
+                BGColor: BGColor.ToOption(),
+                Camera: Camera.ToOption(),
+                Domain: Domain.ToOption(),
+                DragMode: DragMode.ToOption(),
+                HoverMode: HoverMode.ToOption(),
+                UIRevision: UIRevision.ToOption(),
+                XAxis: XAxis.ToOption(),
+                YAxis: YAxis.ToOption(),
+                ZAxis: ZAxis.ToOption()
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetXAxis(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Plotly.NET.LayoutObjects.Scene scene
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.getXAxis(
+                scene: scene
+            );
+    public static Plotly.NET.LayoutObjects.Scene SetXAxis(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Plotly.NET.LayoutObjects.LinearAxis xAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.setXAxis(
+                xAxis: xAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetYAxis(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Plotly.NET.LayoutObjects.Scene scene
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.getYAxis(
+                scene: scene
+            );
+    public static Plotly.NET.LayoutObjects.Scene SetYAxis(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Plotly.NET.LayoutObjects.LinearAxis yAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.setYAxis(
+                yAxis: yAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetZAxis(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Plotly.NET.LayoutObjects.Scene scene
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.getZAxis(
+                scene: scene
+            );
+    public static Plotly.NET.LayoutObjects.Scene SetZAxis(
+        this Plotly.NET.LayoutObjects.Scene obj,
+        Plotly.NET.LayoutObjects.LinearAxis zAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Scene.setZAxis(
+                zAxis: zAxis
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs b/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs
new file mode 100644
index 000000000..27bfd978f
--- /dev/null
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs
@@ -0,0 +1,74 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp.LayoutObjects;
+
+public static class Smith {
+    public static Plotly.NET.LayoutObjects.Smith Init(
+        Optional<Plotly.NET.Color> BGColor = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<Plotly.NET.LayoutObjects.ImaginaryAxis> ImaginaryAxis = default,
+        Optional<Plotly.NET.LayoutObjects.RealAxis> RealAxis = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Smith.init(
+                BGColor: BGColor.ToOption(),
+                Domain: Domain.ToOption(),
+                ImaginaryAxis: ImaginaryAxis.ToOption(),
+                RealAxis: RealAxis.ToOption()
+            );
+    public static Plotly.NET.LayoutObjects.Smith Style(
+        this Plotly.NET.LayoutObjects.Smith obj,
+        Optional<Plotly.NET.Color> BGColor = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<Plotly.NET.LayoutObjects.ImaginaryAxis> ImaginaryAxis = default,
+        Optional<Plotly.NET.LayoutObjects.RealAxis> RealAxis = default
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Smith.style(
+                BGColor: BGColor.ToOption(),
+                Domain: Domain.ToOption(),
+                ImaginaryAxis: ImaginaryAxis.ToOption(),
+                RealAxis: RealAxis.ToOption()
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.ImaginaryAxis GetImaginaryAxis(
+        this Plotly.NET.LayoutObjects.Smith obj,
+        Plotly.NET.LayoutObjects.Smith smith
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Smith.getImaginaryAxis(
+                smith: smith
+            );
+    public static Plotly.NET.LayoutObjects.Smith SetImaginaryAxis(
+        this Plotly.NET.LayoutObjects.Smith obj,
+        Plotly.NET.LayoutObjects.ImaginaryAxis imaginaryAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Smith.setImaginaryAxis(
+                imaginaryAxis: imaginaryAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.RealAxis GetRealAxis(
+        this Plotly.NET.LayoutObjects.Smith obj,
+        Plotly.NET.LayoutObjects.Smith smith
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Smith.getRealAxis(
+                smith: smith
+            );
+    public static Plotly.NET.LayoutObjects.Smith SetRealAxis(
+        this Plotly.NET.LayoutObjects.Smith obj,
+        Plotly.NET.LayoutObjects.RealAxis realAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Smith.setRealAxis(
+                realAxis: realAxis
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs b/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs
new file mode 100644
index 000000000..0501fa1ae
--- /dev/null
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs
@@ -0,0 +1,100 @@
+// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+
+namespace Plotly.NET.CSharp.LayoutObjects;
+
+public static class Ternary {
+    public static Plotly.NET.LayoutObjects.Ternary Init<a>(
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> AAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> BAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> CAxis = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<a> Sum = default,
+        Optional<Plotly.NET.Color> BGColor = default
+    )
+        where a: System.IConvertible
+        =>
+            Plotly.NET.LayoutObjects.Ternary.init<a>(
+                AAxis: AAxis.ToOption(),
+                BAxis: BAxis.ToOption(),
+                CAxis: CAxis.ToOption(),
+                Domain: Domain.ToOption(),
+                Sum: Sum.ToOption(),
+                BGColor: BGColor.ToOption()
+            );
+    public static Plotly.NET.LayoutObjects.Ternary Style<a>(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> AAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> BAxis = default,
+        Optional<Plotly.NET.LayoutObjects.LinearAxis> CAxis = default,
+        Optional<Plotly.NET.LayoutObjects.Domain> Domain = default,
+        Optional<a> Sum = default,
+        Optional<Plotly.NET.Color> BGColor = default
+    )
+        where a: System.IConvertible
+        =>
+            Plotly.NET.LayoutObjects.Ternary.style<a>(
+                AAxis: AAxis.ToOption(),
+                BAxis: BAxis.ToOption(),
+                CAxis: CAxis.ToOption(),
+                Domain: Domain.ToOption(),
+                Sum: Sum.ToOption(),
+                BGColor: BGColor.ToOption()
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetAAxis(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Plotly.NET.LayoutObjects.Ternary ternary
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Ternary.getAAxis(
+                ternary: ternary
+            );
+    public static Plotly.NET.LayoutObjects.Ternary SetAAxis(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Plotly.NET.LayoutObjects.LinearAxis aAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Ternary.setAAxis(
+                aAxis: aAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetBAxis(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Plotly.NET.LayoutObjects.Ternary ternary
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Ternary.getBAxis(
+                ternary: ternary
+            );
+    public static Plotly.NET.LayoutObjects.Ternary SetBAxis(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Plotly.NET.LayoutObjects.LinearAxis bAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Ternary.setBAxis(
+                bAxis: bAxis
+            ).Invoke(obj);
+    public static Plotly.NET.LayoutObjects.LinearAxis GetCAxis(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Plotly.NET.LayoutObjects.Ternary ternary
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Ternary.getCAxis(
+                ternary: ternary
+            );
+    public static Plotly.NET.LayoutObjects.Ternary SetCAxis(
+        this Plotly.NET.LayoutObjects.Ternary obj,
+        Plotly.NET.LayoutObjects.LinearAxis cAxis
+    )
+
+        =>
+            Plotly.NET.LayoutObjects.Ternary.setCAxis(
+                cAxis: cAxis
+            ).Invoke(obj);
+}
\ No newline at end of file
diff --git a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx b/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
deleted file mode 100644
index de7f53473..000000000
--- a/src/Plotly.NET.CSharp/ObjectAbstractions/TraceObjects/traceobject-codegen.fsx
+++ /dev/null
@@ -1,233 +0,0 @@
-open System.IO
-open System.Text
-open System.Text.RegularExpressions
-
-let mapFSharpType (typeName:string) =
-    typeName
-        .Replace("float","double")
-        .Replace("seq","IEnumerable")
-
-
-let class_template = """public static partial class TraceObjects
-{
-    public static Plotly.NET.TraceObjects.[OBJECT_NAME] Init[OBJECT_NAME][GENERICS]
-        (
-[MANDATORY_PARAMS]
-[OPTIONAL_PARAMS]
-        ) 
-[GENERICS_ANNOTATIONS]
-            Plotly.NET.TraceObjects.[OBJECT_NAME].init(
-[MANDATORY_PARAMS_SETTERS]
-[OPTIONAL_PARAMS_SETTERS]
-            );
-}
-"""
-
-type TraceObjectAbstraction = {
-    ObjectName: string
-    MandatoryParams: (string*string) list
-    OptionalParams: (string*string) list
-    Generics: string list
-} with
-    static member create name (m: (string*string) list) (o: (string*string) list) = 
-        
-        let generics =
-            List.concat [m; o]
-            |> List.filter (fun (pName, pType) -> pType.Contains("#IConvertible"))
-            |> List.map fst
-            |> List.map (fun pName -> pName, $"{pName}Type")
-            |> Map.ofList
-
-        let csharpMandatoryParams = 
-            m 
-            |> List.map (fun (pName, pType) -> pName, mapFSharpType pType)
-            |> List.map (fun (pName, pType) -> 
-                pName, 
-                if pType.Contains("#IConvertible") then 
-                    pType.Replace("#IConvertible", generics[pName])
-                else
-                    pType
-            )
-        let csharpOptionalyParams = 
-            o 
-            |> List.map (fun (pName, pType) -> pName, mapFSharpType pType)
-            |> List.map (fun (pName, pType) -> 
-                pName, 
-                if pType.Contains("#IConvertible") then 
-                    pType.Replace("#IConvertible", generics[pName])
-                else
-                    pType
-            )
-
-        {
-            ObjectName = name
-            MandatoryParams = csharpMandatoryParams
-            OptionalParams = csharpOptionalyParams
-            Generics = generics.Values |> List.ofSeq
-        }
-
-    static member toClassTemplate (tObj: TraceObjectAbstraction) =
-
-        let mParams =
-            tObj.MandatoryParams
-            |> List.map (fun (pName, pType) -> $"            {pType} {pName}")
-            |> String.concat $",{System.Environment.NewLine}"    
-
-        let mParamSetters =
-            tObj.MandatoryParams
-            |> List.map (fun (pName, _) -> $"                {pName}: {pName}")
-            |> String.concat $",{System.Environment.NewLine}"    
-
-        let optParams =
-            tObj.OptionalParams
-            |> List.map (fun (pName, pType) -> $"            Optional<{pType}> {pName} = default")
-            |> String.concat $",{System.Environment.NewLine}"
-
-        let optParamsSetters =
-            tObj.OptionalParams
-            |> List.map (fun (pName, pType) -> $"                {pName}: {pName}.ToOption()")
-            |> String.concat $",{System.Environment.NewLine}"
-
-        let generics =
-            if tObj.Generics.IsEmpty then
-                $""
-            else
-                let g = tObj.Generics |> String.concat ", "
-                $"<{g}>"
-
-        let genericsAnnotations =
-            if tObj.Generics.IsEmpty then
-                $"{System.Environment.NewLine}            =>"
-            else
-                let g = 
-                    tObj.Generics 
-                    |> List.map (fun generic -> $"            where {generic}: IConvertible")
-                    |> String.concat System.Environment.NewLine
-                $"{g}{System.Environment.NewLine}            =>"
-
-        class_template
-            .Replace("[OBJECT_NAME]", tObj.ObjectName)
-            .Replace("[MANDATORY_PARAMS]", mParams)
-            .Replace("[OPTIONAL_PARAMS]", optParams)
-            .Replace("[MANDATORY_PARAMS_SETTERS]", mParamSetters)
-            .Replace("[OPTIONAL_PARAMS_SETTERS]", optParamsSetters)
-            .Replace("[GENERICS]", generics)
-            .Replace("[GENERICS_ANNOTATIONS]", genericsAnnotations)
-
-let objectNameRegex = new Regex("type (?<objectName>[A-Za-z]*)()")
-
-let getObjectName (str:string) =
-    let m = objectNameRegex.Match(str)
-    m.Groups.Item("objectName").Value
-
-let paramRegex = new Regex("(?<pName>\S*):\s*(?<pType>[^,]*)")
-
-let getParam (str:string) =
-    let m = paramRegex.Match(str)
-    m.Groups.Item("pName").Value,
-    m.Groups.Item("pType").Value
-    
-let optParamRegex = new Regex("\?(?<pName>\S*):\s*(?<pType>[^,]*)")
-
-let getOptParam (str:string) =
-    let m = optParamRegex.Match(str)
-    m.Groups.Item("pName").Value,
-    m.Groups.Item("pType").Value
-
-let parseSourceFile (path:string) =
-    let rec loop (lines: string list) (isFirstObj: bool) (isInit: bool) (currentName: string) (mParams: (string*string) list) (oParams: (string*string) list) (acc: TraceObjectAbstraction list) =
-        match lines with
-        | line::rest ->
-            match line with
-            | objectName when line.StartsWith("type") ->
-                let name = getObjectName objectName
-                if isFirstObj then 
-                    loop rest false isInit name mParams oParams acc
-                else
-                    loop rest isFirstObj isInit name [] [] ((TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams)) :: acc)
-            
-            | init when init.Trim() = "static member init" ->
-                printfn "is init"
-                loop rest isFirstObj true currentName mParams oParams acc
-
-            | inlineInit when inlineInit.Trim().StartsWith("static member init(") ->
-
-                if inlineInit.Contains("[<Optional; DefaultParameterValue(") then
-                    loop rest isFirstObj isInit currentName mParams ((getOptParam inlineInit) :: oParams) acc
-                else
-                    loop rest isFirstObj isInit currentName ((getParam inlineInit) :: mParams)  oParams acc
-                
-            
-            | otherMember when otherMember.Trim().StartsWith("static member") ->
-                printfn "is other member"
-                loop rest isFirstObj false currentName mParams oParams acc
-                
-            | bodyStart when 
-                bodyStart.Trim().StartsWith("(") ->
-                printfn "is body start"
-                loop rest isFirstObj isInit currentName mParams oParams acc
-
-            | bodyEnd when 
-                bodyEnd.Trim().StartsWith(") =") ->
-                printfn "is body end"
-                loop rest isFirstObj false currentName mParams oParams acc
-
-            | optParam when isInit && optParam.Trim().StartsWith("[<Optional; DefaultParameterValue(") ->
-                printfn "is opt param"
-                loop rest isFirstObj isInit currentName mParams ((getOptParam optParam) :: oParams) acc
-
-            | param when isInit ->
-
-                printfn "is param"
-                loop rest isFirstObj isInit currentName ((getParam param) :: mParams)  oParams acc
-            
-            | _ -> loop rest isFirstObj isInit currentName mParams oParams acc
-
-        | [] -> (TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams))::acc |> List.rev
-
-    loop (File.ReadAllLines path |> List.ofArray) true false "" [] [] []
-
-
-let file_template = """
-using Microsoft.FSharp.Core;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Plotly.NET.CSharp;
-
-[CLASSES]
-"""
-
-let createCSharpSourceFile (objectAbstractions: TraceObjectAbstraction list) =
-    let classes = 
-        objectAbstractions 
-        |> List.map TraceObjectAbstraction.toClassTemplate 
-        |> String.concat System.Environment.NewLine
-    
-    file_template.Replace("[CLASSES]",classes)
-
-let indicator = parseSourceFile @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\Indicator.fs"
-
-createCSharpSourceFile indicator
-
-let sourceFiles =
-    Directory.EnumerateFiles @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\"
-    |> Seq.cast<string>
-    |> Array.ofSeq
-
-let targetFiles = 
-    sourceFiles
-    |> Array.map (fun path -> 
-        path
-            .Replace(@"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\", @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET.CSharp\ObjectAbstractions\TraceObjects\")
-            .Replace(".fs", ".cs")
-    )
-Array.zip sourceFiles targetFiles
-|> Array.iter (fun (source, target) ->
-    let classes = parseSourceFile source
-    let targetFile = createCSharpSourceFile classes
-    File.WriteAllText(target, targetFile)
-)
\ No newline at end of file
diff --git a/src/Plotly.NET.Codegen/Common.fs b/src/Plotly.NET.Codegen/Common.fs
new file mode 100644
index 000000000..0f09736a2
--- /dev/null
+++ b/src/Plotly.NET.Codegen/Common.fs
@@ -0,0 +1,45 @@
+module Common
+
+open Plotly.NET
+open System
+open System.Reflection
+open System.IO
+open System.Text
+open System.Text.RegularExpressions
+
+let typeNumbers = [|for n in 1 .. 100 -> $"`{n}"|]
+
+let cleanTypeName (typeName:string) = 
+    let typeName' =
+        typeNumbers
+        |> Array.fold (fun (acc: string) number -> acc.Replace(number,"")) typeName
+    typeName'
+        .Replace("+",".")
+        .Replace("[","<")
+        .Replace("]",">")
+
+let mapFSharpType (typeName:string) =
+    typeName
+        .Replace("float","double")
+        .Replace("seq","IEnumerable")
+
+let ident (level:int) (str: string) =
+    let identation = [for i in 0 .. level - 1 -> "    "] |> String.concat ""
+    $"{identation}{str}"
+
+let capitalize (methodName:string) = 
+    if methodName.Length > 0 then
+        $"{Char.ToUpper methodName[0]}{methodName[1..]}"
+    else    
+        methodName
+
+let ensureDirectory path =
+    if not (Directory.Exists(path)) then Directory.CreateDirectory(path) |> ignore
+
+let plotlyVersion = typeof<Plotly.NET.Layout>.Assembly
+
+let initFileHeader() = $"""// this file was auto-generated using Plotly.NET.Codegen on {System.DateTime.Now.ToShortDateString()} targeting {plotlyVersion}.
+// Do not edit this, as it will most likely be overwritten on the next codegen run.
+// Instead, file an issue or target the codegen with your changes directly.
+// Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
+"""
\ No newline at end of file
diff --git a/src/Plotly.NET.Codegen/CoreObjects.fs b/src/Plotly.NET.Codegen/CoreObjects.fs
new file mode 100644
index 000000000..603731387
--- /dev/null
+++ b/src/Plotly.NET.Codegen/CoreObjects.fs
@@ -0,0 +1,144 @@
+/// functions for creating core objects
+///
+/// core objects are abstractions for plotly.js objects which come with more than simple init and style methods, such as custom getters and setters.
+/// An example for such an object would be the Layout object. 
+/// Non-toplevel can also belong to this type of object abstraction, such as all the subplot types (e.g. Polar or Geo)
+///
+/// The main difference for these objects is that they need a collection of extension methods in addition to static method abstractions.
+module CoreObjects
+
+open Common
+open TemplateStrings
+open System.Reflection
+
+let getBindingMethods (t:System.Type) =
+    t.GetMembers()
+    |> Array.filter (fun m -> m.DeclaringType.Name = t.Name)
+    |> Array.filter (fun m -> m.MemberType = MemberTypes.Method)
+    |> Array.map (fun m -> 
+        m.Name,
+        t.GetMethod(m.Name)
+    )
+
+let generateStaticMethodBindings (methods: (string*MethodInfo)  []) =
+    methods
+    |> Array.map (fun (methodName, method) ->
+        if methodName.Contains("try") then
+            None
+        else
+            let shouldBeExtension = not (methodName.Contains("init"))
+
+            let mutable isFunc = false
+
+            let parameters = method.GetParameters()
+
+            let return_type = 
+                if shouldBeExtension then
+                    let n = method.ReturnType.Name
+                    printfn "%s" n
+                    match n with
+                    | func when func.Contains("FSharpFunc") ->
+                        let func_generics = method.ReturnType.GenericTypeArguments
+                        isFunc <- true
+                        let funcReturnType = cleanTypeName (func_generics[1].ToString())
+                        printfn "func return type: %s" funcReturnType
+                        funcReturnType
+                    | _ -> cleanTypeName (method.ReturnType.ToString())
+                else
+                    cleanTypeName (method.ReturnType.ToString())
+
+            let generics= 
+                if method.ContainsGenericParameters then 
+                    method
+                        .GetGenericMethodDefinition()
+                        .GetGenericArguments()
+                        |> Array.map (fun generic -> generic.Name, generic.GetGenericParameterConstraints())
+                else
+                    [||]
+
+            let generic_annotations = 
+                if generics.Length > 0 then
+                    generics
+                    |> Array.map fst
+                    |> String.concat ", "
+                    |> fun generics -> $"<{generics}>"
+                else 
+                    ""
+
+            let generic_constraints =
+                if generics.Length > 0 then
+                    generics
+                    |> Array.map (fun (name,types) -> 
+                        if types.Length > 0 then 
+                            $"where {name}: {types[0]}"
+                        else
+                            ""
+                    )
+                else 
+                    [||]
+
+            let parameter_bodies =
+                parameters
+                |> Array.map (fun p ->
+                    if p.IsOptional then
+                        let annotations =
+                            p.ParameterType.GetTypeInfo().GetGenericArguments()
+                            |> Array.map (fun t -> cleanTypeName (t.ToString()))
+                        $"Optional<{annotations[0]}> {p.Name} = default"
+                    else
+                        let pType = cleanTypeName (p.ParameterType.ToString())
+                        $"{pType} {p.Name}"
+                )
+
+
+            let parameter_bindings =
+                parameters
+                |> Array.map (fun p ->
+                    if p.IsOptional then
+                        $"{p.Name}: {p.Name}.ToOption()"
+                    else    
+                        $"{p.Name}: {p.Name}"
+                )
+
+            let declaring_type = cleanTypeName (method.DeclaringType.ToString())
+
+            if shouldBeExtension then
+                Some(
+                    MethodTemplates.initExtensionMethodTemplate( 
+                        identationLevel = 1,
+                        isFunction = isFunc,
+                        returnType = return_type,
+                        capitalizedMethodName = capitalize methodName,
+                        genericAnnotations = generic_annotations,
+                        parameters = parameter_bodies,
+                        genericConstraints = generic_constraints,
+                        declaringType = declaring_type,
+                        methodName = methodName,
+                        parameterBindings = parameter_bindings
+                    )
+                )
+            else
+                Some(
+                    MethodTemplates.initStaticMethodTemplate( 
+                        identationLevel = 1,
+                        returnType = return_type,
+                        capitalizedMethodName = capitalize methodName,
+                        genericAnnotations = generic_annotations,
+                        parameters = parameter_bodies,
+                        genericConstraints = generic_constraints,
+                        declaringType = declaring_type,
+                        methodName = methodName,
+                        parameterBindings = parameter_bindings
+                    )
+                )
+        )
+        |> Array.choose id
+
+let generateClass (className:string) (nameSpace:string) (methods: string []) =
+    ClassTemplates.initCoreObjectAbstractionClassTemplate(
+        identationLevel = 0,
+        nameSpace = className,
+        className = nameSpace,
+        staticMethods = methods
+    )
+
diff --git a/src/Plotly.NET.Codegen/Playground/important-objects-codegen.fsx b/src/Plotly.NET.Codegen/Playground/important-objects-codegen.fsx
new file mode 100644
index 000000000..e5cd2eb9a
--- /dev/null
+++ b/src/Plotly.NET.Codegen/Playground/important-objects-codegen.fsx
@@ -0,0 +1,102 @@
+open System.Reflection
+open Plotly.NET
+
+let l = typeof<Plotly.NET.Layout>
+
+let methods = 
+    l.GetMembers()
+    |> Array.filter (fun m -> m.DeclaringType.Name = l.Name)
+    |> Array.filter (fun m -> m.MemberType = MemberTypes.Method)
+    |> Array.map (fun m -> 
+        m.Name,
+        l.GetMethod(m.Name)
+    )
+
+
+let generated_methods = 
+    methods
+    |> Array.map (fun (methodName, method) ->
+    
+        let return_type = method.ReturnType.ToString()
+
+        let parameters = method.GetParameters()
+
+        let generics= 
+            method
+                .GetGenericMethodDefinition()
+                .GetGenericArguments()
+                |> Array.map (fun generic -> generic.Name, generic.GetGenericParameterConstraints())
+
+
+        let generic_annotations = 
+            if generics.Length > 0 then
+                generics
+                |> Array.map fst
+                |> String.concat ", "
+                |> fun generics -> $"<{generics}>"
+            else 
+                ""
+
+        let generic_constraints =
+            if generics.Length > 0 then
+                generics
+                |> Array.map (fun (name,types) -> 
+                    if types.Length > 0 then 
+                        $"where {name}: {types[0]}"
+                    else
+                        ""
+                )
+                |> String.concat $"{System.Environment.NewLine}    "
+            else 
+                ""
+
+        let parameter_bodies =
+            parameters
+            |> Array.map (fun p ->
+                if p.IsOptional then
+                    let annotations =
+                        p.ParameterType.GetTypeInfo().GetGenericArguments()
+                        |> Array.map (
+                            fun t -> 
+                                t
+                                    .ToString()
+                                    .Replace("+",".")
+                                    .Replace("[","<")
+                                    .Replace("]",">")
+                                    .Replace("`1","")
+                        )
+                    $"Optional<{annotations[0]}> {p.Name} = default"
+                else
+                    let pType = 
+                        p.ParameterType
+                            .ToString()
+                            .Replace("+",".")
+                            .Replace("[","<")
+                            .Replace("]",">")
+                            .Replace("`1","")
+
+                    $"{pType} {p.Name}"
+            )
+            |> String.concat $",{System.Environment.NewLine}    "
+
+
+        let parameter_bindings =
+            parameters
+            |> Array.map (fun p ->
+                $"{p.Name}: {p.Name}"
+            )
+            |> String.concat $",{System.Environment.NewLine}            "
+
+        $"""public static {return_type} {methodName}{generic_annotations}(
+    {parameter_bodies}
+)
+    {generic_constraints}
+    =>
+        {method.DeclaringType}.{methodName}{generic_annotations}(
+            {parameter_bindings}
+        );
+"""
+    )
+
+generated_methods[0]
+|> printfn "%A"
\ No newline at end of file
diff --git a/src/Plotly.NET.Codegen/Playground/traceobject-codegen.fsx b/src/Plotly.NET.Codegen/Playground/traceobject-codegen.fsx
new file mode 100644
index 000000000..d2609c84b
--- /dev/null
+++ b/src/Plotly.NET.Codegen/Playground/traceobject-codegen.fsx
@@ -0,0 +1,31 @@
+#load "../Common.fs"
+#load "../TraceObjects.fs"
+open Common
+open Plotly.NET.TraceObjects
+open System.Text
+open System.Text.RegularExpressions
+open System.IO
+
+
+let indicator = TraceObjectAbstraction.parseSourceFile @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\Indicator.fs"
+
+TraceObjectAbstraction.createCSharpSourceFile indicator
+
+let sourceFiles =
+    Directory.EnumerateFiles @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\"
+    |> Seq.cast<string>
+    |> Array.ofSeq
+
+let targetFiles = 
+    sourceFiles
+    |> Array.map (fun path -> 
+        path
+            .Replace(@"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET\Traces\ObjectAbstractions\", @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET.CSharp\ObjectAbstractions\TraceObjects\")
+            .Replace(".fs", ".cs")
+    )
+Array.zip sourceFiles targetFiles
+|> Array.iter (fun (source, target) ->
+    let classes = TraceObjectAbstraction.parseSourceFile source
+    let targetFile = TraceObjectAbstraction.createCSharpSourceFile classes
+    File.WriteAllText(target, targetFile)
+)
\ No newline at end of file
diff --git a/src/Plotly.NET.Codegen/Plotly.NET.Codegen.fsproj b/src/Plotly.NET.Codegen/Plotly.NET.Codegen.fsproj
new file mode 100644
index 000000000..2565a6587
--- /dev/null
+++ b/src/Plotly.NET.Codegen/Plotly.NET.Codegen.fsproj
@@ -0,0 +1,22 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>net6.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Include="Playground\important-objects-codegen.fsx" />
+    <None Include="Playground\traceobject-codegen.fsx" />
+    <Compile Include="Common.fs" />
+    <Compile Include="TemplateStrings.fs" />
+    <Compile Include="CoreObjects.fs" />
+    <Compile Include="TraceObjects.fs" />
+    <Compile Include="Program.fs" />
+  </ItemGroup>
+
+  <ItemGroup>
+	  <PackageReference Include="Plotly.NET" Version="3.0.1" />
+  </ItemGroup>
+
+</Project>
diff --git a/src/Plotly.NET.Codegen/Program.fs b/src/Plotly.NET.Codegen/Program.fs
new file mode 100644
index 000000000..0b9e2a050
--- /dev/null
+++ b/src/Plotly.NET.Codegen/Program.fs
@@ -0,0 +1,42 @@
+open System.Reflection
+open System
+open System.IO
+
+open Common
+open TemplateStrings
+
+[<EntryPoint>]
+let main (args: string []) = 
+
+    //if args.Length <> 1 then
+    //    failwith "provide root path plz"
+
+    //let root = args[0]
+
+    let root = @"C:\Users\schne\source\repos\plotly\Plotly.NET\src\Plotly.NET.CSharp"
+
+    // tuple of type to generate bindings for, target namespace, and target filepath
+    let core_object_target_types = [
+        // to-do problem with generic trace argument: typeof<Plotly.NET.Trace>, "Plotly.NET.CSharp", Path.Combine(root, "")
+        typeof<Plotly.NET.Layout>, "Plotly.NET.CSharp", Path.Combine(root, "")
+        // to-do (no custom setters/getters in core lib): 
+        typeof<Plotly.NET.LayoutObjects.Geo>, "Plotly.NET.CSharp.LayoutObjects", Path.Combine(root, "LayoutObjects")
+        // to-do (no custom setters/getters in core lib)
+        typeof<Plotly.NET.LayoutObjects.Mapbox>, "Plotly.NET.CSharp.LayoutObjects", Path.Combine(root, "LayoutObjects")
+        typeof<Plotly.NET.LayoutObjects.Ternary>, "Plotly.NET.CSharp.LayoutObjects", Path.Combine(root, "LayoutObjects")
+        typeof<Plotly.NET.LayoutObjects.Scene>, "Plotly.NET.CSharp.LayoutObjects", Path.Combine(root, "LayoutObjects")
+        typeof<Plotly.NET.LayoutObjects.Polar>, "Plotly.NET.CSharp.LayoutObjects", Path.Combine(root, "LayoutObjects")
+        typeof<Plotly.NET.LayoutObjects.Smith>, "Plotly.NET.CSharp.LayoutObjects", Path.Combine(root, "LayoutObjects")
+    ]
+
+    core_object_target_types
+    |> List.iter(fun (coreType, targetNamespace, path) ->
+        ensureDirectory path
+        let methods = CoreObjects.getBindingMethods coreType
+        let static_method_bindings = CoreObjects.generateStaticMethodBindings methods
+        let class_binding = CoreObjects.generateClass  targetNamespace coreType.Name static_method_bindings
+        let file_name = Path.Combine(path, $"{coreType.Name}.cs")
+        File.WriteAllText(file_name, class_binding)
+    )
+
+    0
\ No newline at end of file
diff --git a/src/Plotly.NET.Codegen/TemplateStrings.fs b/src/Plotly.NET.Codegen/TemplateStrings.fs
new file mode 100644
index 000000000..7a103d3b1
--- /dev/null
+++ b/src/Plotly.NET.Codegen/TemplateStrings.fs
@@ -0,0 +1,72 @@
+module TemplateStrings
+open Common 
+
+type MethodTemplates() =
+
+    static member initStaticMethodTemplate (
+        identationLevel: int,
+        returnType: string,
+        capitalizedMethodName: string,
+        genericAnnotations: string,
+        parameters: string [],
+        genericConstraints: string [],
+        declaringType: string,
+        methodName: string,
+        parameterBindings: string []
+    ) = 
+        [
+            ident identationLevel $"public static {returnType} {capitalizedMethodName}{genericAnnotations}("
+            parameters |> Array.map (ident (identationLevel + 1)) |> String.concat $",{System.Environment.NewLine}"
+            ident identationLevel ")"
+            genericConstraints |> Array.map (ident (identationLevel + 1)) |> String.concat $"{System.Environment.NewLine}"
+            ident (identationLevel + 1) "=>"
+            ident (identationLevel + 2) $"{declaringType}.{methodName}{genericAnnotations}("
+            parameterBindings |> Array.map (ident (identationLevel + 3)) |> String.concat $",{System.Environment.NewLine}"
+            ident (identationLevel + 2) ");"
+        ]
+        |> String.concat System.Environment.NewLine
+
+    static member initExtensionMethodTemplate (
+        identationLevel: int,
+        isFunction: bool,
+        returnType: string,
+        capitalizedMethodName: string,
+        genericAnnotations: string,
+        parameters: string [],
+        genericConstraints: string [],
+        declaringType: string,
+        methodName: string,
+        parameterBindings: string []
+    ) = 
+        let invoke = if isFunction then ".Invoke(obj)" else ""
+
+        [
+            ident identationLevel $"public static {returnType} {capitalizedMethodName}{genericAnnotations}("
+            ident (identationLevel + 1) $"this {declaringType} obj,"
+            parameters |> Array.map (ident (identationLevel + 1)) |> String.concat $",{System.Environment.NewLine}"
+            ident identationLevel ")"
+            genericConstraints |> Array.map (ident (identationLevel + 1)) |> String.concat $"{System.Environment.NewLine}"
+            ident (identationLevel + 1) "=>"
+            ident (identationLevel + 2) $"{declaringType}.{methodName}{genericAnnotations}("
+            parameterBindings |> Array.map (ident (identationLevel + 3)) |> String.concat $",{System.Environment.NewLine}"
+            ident (identationLevel + 2) $"){invoke};"
+        ]
+        |> String.concat System.Environment.NewLine
+
+type ClassTemplates() =
+
+    static member initCoreObjectAbstractionClassTemplate(
+        identationLevel: int,
+        nameSpace: string,
+        className: string,
+        staticMethods: string []
+    ) = 
+        [
+            initFileHeader()
+            ident identationLevel $"namespace {nameSpace};"
+            ""
+            $"public static class {className} " + "{"
+            yield! staticMethods |> Array.map (ident identationLevel)
+            "}"
+        ]
+        |> String.concat System.Environment.NewLine
\ No newline at end of file
diff --git a/src/Plotly.NET.Codegen/TraceObjects.fs b/src/Plotly.NET.Codegen/TraceObjects.fs
new file mode 100644
index 000000000..1ae4e6576
--- /dev/null
+++ b/src/Plotly.NET.Codegen/TraceObjects.fs
@@ -0,0 +1,211 @@
+namespace Plotly.NET.TraceObjects
+
+open Common
+open System.Text
+open System.Text.RegularExpressions
+open System.IO
+
+module Templates = 
+
+    let class_template = """public static partial class TraceObjects
+{
+    public static Plotly.NET.TraceObjects.[OBJECT_NAME] Init[OBJECT_NAME][GENERICS]
+        (
+[MANDATORY_PARAMS]
+[OPTIONAL_PARAMS]
+        ) 
+[GENERICS_ANNOTATIONS]
+            Plotly.NET.TraceObjects.[OBJECT_NAME].init(
+[MANDATORY_PARAMS_SETTERS]
+[OPTIONAL_PARAMS_SETTERS]
+            );
+}
+"""
+
+    
+    let file_template = """
+using Microsoft.FSharp.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Plotly.NET.CSharp;
+
+[CLASSES]
+"""
+
+module Regex =
+    
+    let objectNameRegex = new Regex("type (?<objectName>[A-Za-z]*)()")
+
+    let getObjectName (str:string) =
+        let m = objectNameRegex.Match(str)
+        m.Groups.Item("objectName").Value
+
+    let paramRegex = new Regex("(?<pName>\S*):\s*(?<pType>[^,]*)")
+
+    let getParam (str:string) =
+        let m = paramRegex.Match(str)
+        m.Groups.Item("pName").Value,
+        m.Groups.Item("pType").Value
+    
+    let optParamRegex = new Regex("\?(?<pName>\S*):\s*(?<pType>[^,]*)")
+
+    let getOptParam (str:string) =
+        let m = optParamRegex.Match(str)
+        m.Groups.Item("pName").Value,
+        m.Groups.Item("pType").Value
+
+type TraceObjectAbstraction = {
+    ObjectName: string
+    MandatoryParams: (string*string) list
+    OptionalParams: (string*string) list
+    Generics: string list
+} with
+    static member create name (m: (string*string) list) (o: (string*string) list) = 
+        
+        let generics =
+            List.concat [m; o]
+            |> List.filter (fun (pName, pType) -> pType.Contains("#IConvertible"))
+            |> List.map fst
+            |> List.map (fun pName -> pName, $"{pName}Type")
+            |> Map.ofList
+
+        let csharpMandatoryParams = 
+            m 
+            |> List.map (fun (pName, pType) -> pName, mapFSharpType pType)
+            |> List.map (fun (pName, pType) -> 
+                pName, 
+                if pType.Contains("#IConvertible") then 
+                    pType.Replace("#IConvertible", generics[pName])
+                else
+                    pType
+            )
+        let csharpOptionalyParams = 
+            o 
+            |> List.map (fun (pName, pType) -> pName, mapFSharpType pType)
+            |> List.map (fun (pName, pType) -> 
+                pName, 
+                if pType.Contains("#IConvertible") then 
+                    pType.Replace("#IConvertible", generics[pName])
+                else
+                    pType
+            )
+
+        {
+            ObjectName = name
+            MandatoryParams = csharpMandatoryParams
+            OptionalParams = csharpOptionalyParams
+            Generics = generics.Values |> List.ofSeq
+        }
+
+    static member toClassTemplate (tObj: TraceObjectAbstraction) =
+
+        let mParams =
+            tObj.MandatoryParams
+            |> List.map (fun (pName, pType) -> $"            {pType} {pName}")
+            |> String.concat $",{System.Environment.NewLine}"    
+
+        let mParamSetters =
+            tObj.MandatoryParams
+            |> List.map (fun (pName, _) -> $"                {pName}: {pName}")
+            |> String.concat $",{System.Environment.NewLine}"    
+
+        let optParams =
+            tObj.OptionalParams
+            |> List.map (fun (pName, pType) -> $"            Optional<{pType}> {pName} = default")
+            |> String.concat $",{System.Environment.NewLine}"
+
+        let optParamsSetters =
+            tObj.OptionalParams
+            |> List.map (fun (pName, pType) -> $"                {pName}: {pName}.ToOption()")
+            |> String.concat $",{System.Environment.NewLine}"
+
+        let generics =
+            if tObj.Generics.IsEmpty then
+                $""
+            else
+                let g = tObj.Generics |> String.concat ", "
+                $"<{g}>"
+
+        let genericsAnnotations =
+            if tObj.Generics.IsEmpty then
+                $"{System.Environment.NewLine}            =>"
+            else
+                let g = 
+                    tObj.Generics 
+                    |> List.map (fun generic -> $"            where {generic}: IConvertible")
+                    |> String.concat System.Environment.NewLine
+                $"{g}{System.Environment.NewLine}            =>"
+
+        Templates.class_template
+            .Replace("[OBJECT_NAME]", tObj.ObjectName)
+            .Replace("[MANDATORY_PARAMS]", mParams)
+            .Replace("[OPTIONAL_PARAMS]", optParams)
+            .Replace("[MANDATORY_PARAMS_SETTERS]", mParamSetters)
+            .Replace("[OPTIONAL_PARAMS_SETTERS]", optParamsSetters)
+            .Replace("[GENERICS]", generics)
+            .Replace("[GENERICS_ANNOTATIONS]", genericsAnnotations)
+
+    static member parseSourceFile (path:string) =
+        let rec loop (lines: string list) (isFirstObj: bool) (isInit: bool) (currentName: string) (mParams: (string*string) list) (oParams: (string*string) list) (acc: TraceObjectAbstraction list) =
+            match lines with
+            | line::rest ->
+                match line with
+                | objectName when line.StartsWith("type") ->
+                    let name = Regex.getObjectName objectName
+                    if isFirstObj then 
+                        loop rest false isInit name mParams oParams acc
+                    else
+                        loop rest isFirstObj isInit name [] [] ((TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams)) :: acc)
+            
+                | init when init.Trim() = "static member init" ->
+                    printfn "is init"
+                    loop rest isFirstObj true currentName mParams oParams acc
+
+                | inlineInit when inlineInit.Trim().StartsWith("static member init(") ->
+
+                    if inlineInit.Contains("[<Optional; DefaultParameterValue(") then
+                        loop rest isFirstObj isInit currentName mParams ((Regex.getOptParam inlineInit) :: oParams) acc
+                    else
+                        loop rest isFirstObj isInit currentName ((Regex.getParam inlineInit) :: mParams)  oParams acc
+                
+            
+                | otherMember when otherMember.Trim().StartsWith("static member") ->
+                    printfn "is other member"
+                    loop rest isFirstObj false currentName mParams oParams acc
+                
+                | bodyStart when 
+                    bodyStart.Trim().StartsWith("(") ->
+                    printfn "is body start"
+                    loop rest isFirstObj isInit currentName mParams oParams acc
+
+                | bodyEnd when 
+                    bodyEnd.Trim().StartsWith(") =") ->
+                    printfn "is body end"
+                    loop rest isFirstObj false currentName mParams oParams acc
+
+                | optParam when isInit && optParam.Trim().StartsWith("[<Optional; DefaultParameterValue(") ->
+                    printfn "is opt param"
+                    loop rest isFirstObj isInit currentName mParams ((Regex.getOptParam optParam) :: oParams) acc
+
+                | param when isInit ->
+
+                    printfn "is param"
+                    loop rest isFirstObj isInit currentName ((Regex.getParam param) :: mParams)  oParams acc
+            
+                | _ -> loop rest isFirstObj isInit currentName mParams oParams acc
+
+            | [] -> (TraceObjectAbstraction.create currentName (List.rev mParams) (List.rev oParams))::acc |> List.rev
+
+        loop (File.ReadAllLines path |> List.ofArray) true false "" [] [] []
+
+    static member createCSharpSourceFile (objectAbstractions: TraceObjectAbstraction list) =
+        let classes = 
+            objectAbstractions 
+            |> List.map TraceObjectAbstraction.toClassTemplate 
+            |> String.concat System.Environment.NewLine
+    
+        Templates.file_template.Replace("[CLASSES]",classes)

From 3ee96b7b653cb440fbaf996cdaa5b6993d19edb0 Mon Sep 17 00:00:00 2001
From: Kevin Schneider <schneider.kev@outlook.de>
Date: Mon, 20 Mar 2023 19:39:34 +0100
Subject: [PATCH 6/6] commit codegen changes after rebase (few errors left)

---
 src/Plotly.NET.CSharp/Layout.cs                | 2 +-
 src/Plotly.NET.CSharp/LayoutObjects/Geo.cs     | 2 +-
 src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs  | 2 +-
 src/Plotly.NET.CSharp/LayoutObjects/Polar.cs   | 2 +-
 src/Plotly.NET.CSharp/LayoutObjects/Scene.cs   | 2 +-
 src/Plotly.NET.CSharp/LayoutObjects/Smith.cs   | 2 +-
 src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/Plotly.NET.CSharp/Layout.cs b/src/Plotly.NET.CSharp/Layout.cs
index 98b5454cd..5eadceb8c 100644
--- a/src/Plotly.NET.CSharp/Layout.cs
+++ b/src/Plotly.NET.CSharp/Layout.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs b/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs
index c6cb0c39a..102f43878 100644
--- a/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Geo.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs b/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs
index c6ee653bf..dbabda0da 100644
--- a/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Mapbox.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs b/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs
index a160e6a43..32da66b5c 100644
--- a/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Polar.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs b/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs
index 1b2850253..653fd1256 100644
--- a/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Scene.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs b/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs
index 27bfd978f..7151c2097 100644
--- a/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Smith.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.
diff --git a/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs b/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs
index 0501fa1ae..cfb37323c 100644
--- a/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs
+++ b/src/Plotly.NET.CSharp/LayoutObjects/Ternary.cs
@@ -1,4 +1,4 @@
-// this file was auto-generated using Plotly.NET.Codegen on 06.09.22 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
+// this file was auto-generated using Plotly.NET.Codegen on 3/20/2023 targeting Plotly.NET, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c98c6d87097b7615.
 // Do not edit this, as it will most likely be overwritten on the next codegen run.
 // Instead, file an issue or target the codegen with your changes directly.
 // Bugs that are not caused by wrong codegen are most likely not found in this file, but in the F# source this file is generated from.