@Override
    String generate(ChainVariable inVar, StreamToLoopReplacementContext context) {
      ChainVariable keyVar = new ChainVariable(myKeyType);
      myFn.preprocessVariable(context, keyVar, 0);
      keyVar.addBestNameCandidate("key");
      keyVar.addBestNameCandidate("k");
      ChainVariable valueVar = new ChainVariable(myValueType);
      myFn.preprocessVariable(context, valueVar, 1);
      valueVar.addBestNameCandidate("value");
      valueVar.addBestNameCandidate("v");
      keyVar.register(context);
      valueVar.register(context);
      myFn.transform(context, keyVar.getName(), valueVar.getName());
      return keyVar.getDeclaration(inVar.getName() + ".getKey()") +
             valueVar.getDeclaration(inVar.getName() + ".getValue()") +
             myFn.getStatementText();
    }
@Override
    String generate(ChainVariable inVar, StreamToLoopReplacementContext context)