code: function(prototype) {
        if (prototype.PolymerBase) {
          return prototype;
        }
        var extended = Object.create(prototype);
        // we need a unique copy of base api for each base prototype
        // therefore we 'extend' here instead of simply chaining
        api.publish(api.instance, extended);
        // TODO(sjmiles): sharing methods across prototype chains is
        // not supported by 'super' implementation which optimizes
        // by memoizing prototype relationships.
        // Probably we should have a version of 'extend' that is 
        // share-aware: it could study the text of each function,
        // look for usage of 'super', and wrap those functions in
        // closures.
        // As of now, there is only one problematic method, so 
        // we just patch it manually.
        // To avoid re-entrancy problems, the special super method
        // installed is called `mixinSuper` and the mixin method
        // must use this method instead of the default `super`.
        this.mixinMethod(extended, prototype, api.instance.mdv, 'bind');
        // return buffed-up prototype
        return extended;
      }
docs: install Polymer instance api into prototype chain, as needed