anchor.diff:    // for spread calls `s()`, always use noSuchMethod.
   
     noSuchMethod($dart$core.Invocation invocation) {
  -    if (invocation.memberName == #call || invocation.memberName == #f) {
  -      // There is no spread argument (this is the "f" function)
  +    var inArgs = invocation.positionalArguments;
  +    if (invocation.memberName == #f) {
         // There will always be exactly one argument, which is a sequence
  -      return flatFunction.s(invocation.positionalArguments.first);
  +      return flatFunction.s(inArgs.first);
       }
       else if (invocation.memberName == #s) {
         // There will always be exactly one argument, which is a sequence holding a sequential
  -      return flatFunction.s(invocation.positionalArguments.first.first);
  +      return flatFunction.s(inArgs.first.first);
       }
       else {
         super.noSuchMethod(invocation);
  
positive.code:   }
  }
  
  // TODO Support spread (`s`) invocations.
  //      Optimize by calling `s` in unflatten.
  //      Optimize by unwrapping (un)flatten layers when possible.
  
  Callable flatten(Callable tupleFunction) {
    return new dart$FlatFunction(tupleFunction);
  }
  
  Callable unflatten(Callable flatFunction) {
    return new dart$UnflatFunction(flatFunction);
  }
  
  
negative.code: 
    dart$FlatFunction(Callable this.tupleFunction);
  
    // for non-spread calls `f()`, always use noSuchMethod.
  
    // for spread calls `s()`, always use noSuchMethod.
  
    noSuchMethod($dart$core.Invocation invocation) {
      var inArgs = invocation.positionalArguments;
      if (invocation.memberName == #f) {
        var tuple = invocation.positionalArguments.length > 0
            ? new Tuple.$withList(inArgs, empty) : empty;
  
        return tupleFunction.f(tuple);
      }
      else if (invocation.memberName == #s) {
        // Simply create a tuple with all arguments
        if (inArgs.length == 1) {
          return tupleFunction.f(inArgs.first);
        }
        else {
          // assert(inArgs > 1)
          return tupleFunction.f(new Tuple.$withList(
                  inArgs.sublist(0, inArgs.length - 1), inArgs.last), null);
        }
      }
      else {
  