text: /* */ 
  System.register([], function (_export) {
    "use strict";
  
    var _prototypeProperties, originStorage, Origin;
  
  
    function ensureType(value) {
      if (value instanceof Origin) {
        return value;
      }
  
      return new Origin(value);
    }
  
    return {
      setters: [],
      execute: function () {
        _prototypeProperties = function (child, staticProps, instanceProps) {
          if (staticProps) Object.defineProperties(child, staticProps);
          if (instanceProps) Object.defineProperties(child.prototype, instanceProps);
        };
  
        originStorage = new Map();
        Origin = (function () {
          function Origin(moduleId, moduleMember) {
            this.moduleId = moduleId;
            this.moduleMember = moduleMember;
          }
  
          _prototypeProperties(Origin, {
            get: {
              value: function get(fn) {
                var origin = originStorage.get(fn);
  
                if (origin !== undefined) {
                  return origin;
                }
  
                if (typeof fn.origin === "function") {
                  originStorage.set(fn, origin = ensureType(fn.origin()));
                } else if (fn.origin !== undefined) {
                  originStorage.set(fn, origin = ensureType(fn.origin));
                }
  
                return origin;
              },
              writable: true,
              enumerable: true,
              configurable: true
            },
            set: {
              value: function set(fn, origin) {
                if (Origin.get(fn) === undefined) {
                  originStorage.set(fn, origin);
                }
              },
              writable: true,
              enumerable: true,
              configurable: true
            }
          });
  
          return Origin;
        })();
        _export("Origin", Origin);
      }
    };
  });