anchor.diff:     *    to, starting from the current constructor.
      *  - Call the the constructor bodies, starting from the constructor(s) in the
      *    super class(es).
  -   *
  -   * Invariant: Both [classElement] and [functionElement] must be
  -   * implementation elements.
      */
  -  HGraph buildFactory(ClassElement classElement,
  -                      FunctionElement functionElement) {
  -    assert(invariant(classElement, classElement.isImplementation));
  -    assert(invariant(functionElement, functionElement.isImplementation));
  +  HGraph buildFactory(FunctionElement functionElement) {
  +    functionElement = functionElement.implementation;
  +    ClassElement classElement =
  +        functionElement.getEnclosingClass().implementation;
       FunctionExpression function = functionElement.parseNode(compiler);
       // Note that constructors (like any other static function) do not need
       // to deal with optional arguments. It is the callers job to provide all
       // arguments as if they were positional.
   
  -    // The initializer list could contain closures.
  -    openFunction(functionElement, function);
  +    if (inliningStack.isEmpty) {
  +      // The initializer list could contain closures.
  +      openFunction(functionElement, function);
  +    }
   
       Map<Element, HInstruction> fieldValues = new Map<Element, HInstruction>();
   
  
positive.code:   }
  
    void visit(Node node) {
      node.accept(this);
    }
  
    void visitNode(Node node) {
  
negative.code:       ClosureClassMap newClosureData =
            compiler.closureToClassMapper.computeClosureToClassMapping(
                constructor, node, elements);
        localsHandler.closureData = newClosureData;
  
        params.orderedForEachParameter((Element parameterElement) {
  