protected T CreateNewInstance(IMap <string, INode> childNodes, IStateTreeNode meta) { var observables = Mutables.Select(mutable => new ObservableProperty { Type = mutable.Kind, Name = mutable.Name, Default = mutable.Default }).ToList(); var volatiles = Volatiles.Select(xvolatile => new Observable.VolatileProperty { Type = xvolatile.Kind, Name = xvolatile.Name, Default = xvolatile.Default }).ToList(); var computeds = Views.Select(view => new ComputedProperty { Type = view.Kind, Name = view.Name, Compute = view.View }).ToList(); // var actions = Actions.Select(action => new ActionMethod { Name = action.Name, Action = action.Action }); ObservableTypeDef typeDef = new ObservableTypeDef(observables, volatiles, computeds); var instance = ObservableObject <T, INode> .FromAs(typeDef, Proxify, Name, this, meta); return(instance); }