...
step(2) - we invoke the method stocks on builder
The first thing to note is that builder does not know the method stocks so in java for example the compiler will give an error. In a dynamic language, where these decisions are made at runtime, the builder will missing method exception.
WORK IN PROGRESS