whole_func_string: function clas() {
              // we can't simply use a plain new clas() here
              // since we might get called unbound from a child class
              // or as a constructor
              // therefore we must use the correct 'this' in that case
              if (this !== global) {
                  plain ? (plain = false) : ctor.apply(this, arguments);
                  return this;
  
              } else {
                  // Case of missing new keyword, a bit hackish but still
                  // better than adding another prototype layer
                  return (plain = true) && clas.apply(new clas(), arguments);
              }
          }
func_code_string: function clas() {
              // we can't simply use a plain new clas() here
              // since we might get called unbound from a child class
              // or as a constructor
              // therefore we must use the correct 'this' in that case
              if (this !== global) {
                  plain ? (plain = false) : ctor.apply(this, arguments);
                  return this;
  
              } else {
                  // Case of missing new keyword, a bit hackish but still
                  // better than adding another prototype layer
                  return (plain = true) && clas.apply(new clas(), arguments);
              }
          }
func_documentation_string: class instance constructor