code: function MyConstructor(){
    // get the instance (create it or return `this` if it should be used instead)
    var instance = oop.build( MyConstructor.prototype, this );
  
    // initialize the instance...
    instance.foo = 'bar';
    instance.baz = 'etc';
  
    return instance;
  }
docs: My constructor could be applied within a variety of contexts:
  `MyConstructor()`, `new MyConstructor()`, `MyConstructor.apply( whatever )`,
  `MyPrototype.constructor()`...
  
  Use the `oop.build` utility to avoid the verbosity generated when we want
  to support multiple contexts and call styles. Use the `instance` word.
  
  Always return `instance`. Do not return on a chainable-fashion style, as it
  will easily lead to misstypes, even when they are one-liners. Exceptions to
  this rule may apply when the code is battle-tested and it looks way better,
  avoiding verbosity: `return oop(instance).visible('foo', 'bar').o`);`.
  
  Use the oop description api (aka. OOP Standard API) to avoid verbosity when
  defining property descriptors, Use vanilla js for simple initializations.