protected void write(SymbolicVariable Value, [CallerMemberName] string PropertyName = null) => PropertyValues[PropertyName] = SymbolicVariable.Define(PropertyName, Value.Components.ToArray());
protected SymbolicVariable read([CallerMemberName] string PropertyName = null) => PropertyValues.TryFind(PropertyName).ValueOrElse(() => SymbolicVariable.Define(PropertyName));