Patent ID: 8533671

Claim:
At a computer system including one or more processors and system memory, the computer system also including an object hierarchy instantiated in the system memory, the object hierarchy corresponding to a textual representation of program code and for use in generating a visual representation of the program code, the computer system also including a visual editor for editing the visual representation of the program code generated from the object hierarchy, the object hierarchy including a plurality of levels of connected object nodes, the plurality of levels of connected object nodes including at least a root object node level and a leaf object node level, each of the plurality of levels of connected object nodes including one or more object nodes, each of the one or more object nodes at each leaf object node level including a connection to at least another object node at a level above the object node, at least one of the object nodes in the object hierarchy representing an object of a generic type, the at least one object nodes having been assigned specified types by applying generic type parameters to the at least one object nodes at the time the at least one object nodes were instantiated, a method for replacing an object node with another object node assigned to a different specified type using the visual editor, the method comprising: an act of accessing an object node from the object hierarchy, the object node representing an object of a generic type that was assigned to a first specified type by applying generic type parameters defining the first specified type, the object node having one or more location properties indicating the location of the object node within the object hierarchy; an act of using the visual editor to replace the object node with a new object node assigned to a different second specified type, replacement of the object node including using user-interface controls of the visual editor to create a new object of a generic type, select generic type parameters for defining an object of the second specified type, and apply the selected generic type parameters to the new object to assign the new object to be of the second specified type; an act of preserving the configuration of the object node within the new object node, including: for any non-parameterized data, copying the non-parameterized data from the object node to the new object node; copying the location properties to the new object node; and for at least one portion of parameterized data: an act of using a type converter to convert the at least one portion of parameterized data from the first specified type to the second specified type; and an act of storing the parameterized data in the second specified type in the new object node; and an act of using the one or more location properties to replace the object node with the new object node within the object hierarchy such that each parent node and child node relationship of the object node are preserved in the object hierarchy for the new object node.