whole_func_string: function F(type, term) {
    let original = term;
    if (term && !term.__meta) {
      term = type.wrap ? type.wrap(term) : term;
      term.__meta = {};
      term.__name = function(name) {
        term.__meta.name = name;
        return term;
      };
      term.__desc = function(desc) {
        term.__meta.desc = desc;
        return term;
      };
      if (term.__meta) {
        term.__meta.term = original;
        term.__meta.name = "anon";
        term.__meta.desc = "no description";
      };
    };
    F.check(type, term);
    return term;
  }
func_code_string: function F(type, term) {
    let original = term;
    if (term && !term.__meta) {
      term = type.wrap ? type.wrap(term) : term;
      term.__meta = {};
      term.__name = function(name) {
        term.__meta.name = name;
        return term;
      };
      term.__desc = function(desc) {
        term.__meta.desc = desc;
        return term;
      };
      if (term.__meta) {
        term.__meta.term = original;
        term.__meta.name = "anon";
        term.__meta.desc = "no description";
      };
    };
    F.check(type, term);
    return term;
  }
func_documentation_string: Performs static type checking, enables dynamic type checks.