// Clone will clone this ArgumentList. The new clone will have an identical structure
Clone will clone this ArgumentList. The new clone will have an identical structure
// Clone will clone this ArgumentList . The new clone will have an identical structure
func (e *ArrayMapSelector) Clone(cloneTable *pkg.CloneTable) *ArrayMapSelector {
	clone := &ArrayMapSelector{
		AstID:   unique.NewID(),
		GrlText: e.GrlText,
	}
	if e.Expression != nil {
		if cloneTable.IsCloned(e.Expression.AstID) {
			clone.Expression = cloneTable.Records[e.Expression.AstID].CloneInstance.(*Expression)
		} else {
			clonedExpr := e.Expression.Clone(cloneTable)
			clone.Expression = clonedExpr
			cloneTable.MarkCloned(e.Expression.AstID, clonedExpr.AstID, e.Expression, clonedExpr)
		}
	}
	return clone
}
func ( e * ArrayMapSelector ) Clone ( cloneTable * pkg . CloneTable ) * ArrayMapSelector { clone := & ArrayMapSelector { AstID : unique . NewID ( ) , GrlText : e . GrlText , } if e . Expression != nil { if cloneTable . IsCloned ( e . Expression . AstID ) { clone . Expression = cloneTable . Records [ e . Expression . AstID ] . CloneInstance . ( * Expression ) } else { clonedExpr := e . Expression . Clone ( cloneTable ) clone . Expression = clonedExpr cloneTable . MarkCloned ( e . Expression . AstID , clonedExpr . AstID , e . Expression , clonedExpr ) } } return clone }
Clone will clone this ArgumentList.
Clone will clone this ArgumentList .