    [NAME]
    ALL.module.core.protobject

    [TITLE]
    Protobject

    [DESCRIPTION]

    Protobject is a data type to provide support for prototype-based OOP. Arbitrary fields
    can be set to or gotten from a Protobject object. A delegator can also be set for such
    object. When a Protobject has a delegator, setting a field for this object will only
    affect this object, not the delegator.

       1  load protobject
       2
       3  obj = Protobject()
       4
       5  obj.name = 'FirstObject'  # set a field;
       6
       7  io.writeln( obj.name )    # get a field;
       8
       9  obj2 = Protobject()
      10  obj2.__proto__ = obj  # set a delegator;
      11
      12  io.writeln( obj2.name )
      13
      14
      15  obj2.name = 'SecondObject'
      16
      17  io.writeln( obj.name, obj2.name )