Hi guys

I was looking at the Collection chapter and I stumbled upon newFrom: and I wonder what is the real
difference between newFrom: and withAll:.
I have the impression that there is not much difference. There are only 47 senders of newFrom: in the default Pharo image.

Dictionary class>>withAll: interprets its argument as a collection of values,
whereas
Dictionary class>>newFrom: expects a collection of associations.

I would really deprecate newFrom: in the future.

Stef
I can understand using anObject newFrom: anotherObject

newFrom: aSimilarObject
������ "Create an object that has similar contents to aSimilarObject. If the classes have any instance variables with the same names, copy them across. If this is bad for a class, override this method."

������ ^ (self isVariable
������ ������ ifTrue: [self basicNew: aSimilarObject basicSize]
������ ������ ifFalse: [self basicNew]) copySameFrom: aSimilarObject

copySameFrom: otherObject
������ "Copy to myself all instance variables named the same in otherObject.
������ This ignores otherObject's control over its own inst vars."

������ | myInstVars otherInstVars |
������ myInstVars := self class allInstVarNames.
������ otherInstVars := otherObject class allInstVarNames.
������ myInstVars doWithIndex: [:each :index | | match |
������ ������ (match := otherInstVars indexOf: each) > 0 ifTrue:
������ ������ ������ [self instVarAt: index put: (otherObject instVarAt: match)]].
������ 1 to: (self basicSize min: otherObject basicSize) do: [:i |
������ ������ self basicAt: i put: (otherObject basicAt: i)].

but I do not see the point to use this protocol over withAll: for collection.

And in general I would prefer to call it cloneFrom:

Stef