public static Node Copy(ILocalNode source)
{
if (source == null)
{
return null;
}
switch (source.NodeClass)
{
case NodeClass.Object: return new ObjectNode(source);
case NodeClass.Variable: return new VariableNode(source);
case NodeClass.ObjectType: return new ObjectTypeNode(source);
case NodeClass.VariableType: return new VariableTypeNode(source);
case NodeClass.DataType: return new DataTypeNode(source);
case NodeClass.ReferenceType: return new ReferenceTypeNode(source);
case NodeClass.Method: return new MethodNode(source);
case NodeClass.View: return new ViewNode(source);
}
if (source is IObject) return new ObjectNode(source);
if (source is IVariable) return new VariableNode(source);
if (source is IObjectType) return new ObjectTypeNode(source);
if (source is IVariableType) return new VariableTypeNode(source);
if (source is IDataType) return new DataTypeNode(source);
if (source is IReferenceType) return new ReferenceTypeNode(source);
if (source is IMethod) return new MethodNode(source);
if (source is IView) return new ViewNode(source);
return new Node(source);
}
#endregion