internal NodeReference CopyReference(NodeReference reference) { var result = CreateNodeReference(); result.SetName(reference.GetName()); var subscriptCount = reference.GetSubscriptCount(); if (subscriptCount <= 0) { return(result); } for (var position = 1; position <= subscriptCount; position++) { var subscript = reference.GetObjectSubscript(position); if (subscript is int) { result.AppendSubscript((int)subscript); } else if (subscript is long) { result.AppendSubscript((long)subscript); } else if (subscript is double) { result.AppendSubscript((double)subscript); } else { result.AppendSubscript((string)subscript); } } return(result); }