anchor.diff:      var out = [rootFile];
       switch (config.splitLevel) {
         case SPLIT_LEVEL_NONE:
  -        resourceFile = rootFile;
  -        requestFile = rootFile;
  -        objectFile = rootFile;
  -        dispatchFile = rootFile;
  -        client = new StreamyClient(config, rootFile, null, null, null, null);
  +        _resourceFile = rootFile;
  +        _requestFile = rootFile;
  +        _objectFile = rootFile;
  +        _dispatchFile = rootFile;
  +        _client = new StreamyClient(config, rootFile, null, null, null, null);
           break;
         case SPLIT_LEVEL_PARTS:
  -        resourceFile = new DartLibraryPart(rootFile.libraryName,
  -            '${config.outputPrefix}_resources.dart');
  -        requestFile = new DartLibraryPart(rootFile.libraryName,
  -            '${config.outputPrefix}_requests.dart');
  -        objectFile = new DartLibraryPart(rootFile.libraryName,
  -            '${config.outputPrefix}_objects.dart');
  -        dispatchFile = new DartLibraryPart(rootFile.libraryName,
  -            '${config.outputPrefix}_dispatch.dart');
  +        _resourceFile = new DartLibraryPart(rootFile.libraryName,
  +        '${config.outputPrefix}_resources.dart');
  +        _requestFile = new DartLibraryPart(rootFile.libraryName,
  +        '${config.outputPrefix}_requests.dart');
  +        _objectFile = new DartLibraryPart(rootFile.libraryName,
  +        '${config.outputPrefix}_objects.dart');
  +        _dispatchFile = new DartLibraryPart(rootFile.libraryName,
  +        '${config.outputPrefix}_dispatch.dart');
           rootFile.parts.addAll([resourceFile, requestFile, objectFile, dispatchFile]);
           out.addAll([resourceFile, requestFile, objectFile, dispatchFile]);
  -        client = new StreamyClient(config, rootFile, resourceFile, requestFile, objectFile, dispatchFile);
  +        _client = new StreamyClient(config, rootFile, resourceFile, requestFile, objectFile, dispatchFile);
           break;
         case SPLIT_LEVEL_LIBS:
  -        resourceFile = new DartLibrary('$libPrefix.resources');
  -        requestFile = new DartLibrary('$libPrefix.requests');
  -        objectFile = new DartLibrary('$libPrefix.objects');
  -        dispatchFile = new DartLibrary('$libPrefix.dispatch');
  -        resourcePrefix = 'resources';
  -        requestPrefix = 'requests';
  -        objectPrefix = 'objects';
  -        dispatchPrefix = 'dispatch';
  +        _resourceFile = new DartLibrary('$libPrefix.resources');
  +        _requestFile = new DartLibrary('$libPrefix.requests');
  +        _objectFile = new DartLibrary('$libPrefix.objects');
  +        _dispatchFile = new DartLibrary('$libPrefix.dispatch');
  +        _resourcePrefix = 'resources';
  +        _requestPrefix = 'requests';
  +        _objectPrefix = 'objects';
  +        _dispatchPrefix = 'dispatch';
           rootFile.imports
             ..[importPath('resources.dart')] = 'resources'
             ..[importPath('dispatch.dart')] = 'dispatch';
  -        resourceFile.imports
  +        _resourceFile.imports
             ..['package:streamy/streamy.dart'] = 'streamy'
             ..['package:fixnum/fixnum.dart'] = 'fixnum'
             ..[config.baseImport] = BASE_PREFIX
             ..[importPath('requests.dart')] = 'requests'
             ..[importPath('objects.dart')] = 'objects';
  -        requestFile.imports
  +        _requestFile.imports
             ..['package:streamy/streamy.dart'] = 'streamy'
             ..['package:fixnum/fixnum.dart'] = 'fixnum'
             ..[config.baseImport] = BASE_PREFIX
             ..[importPath('objects.dart')] = 'objects'
             ..[importPath('dispatch.dart')] = 'dispatch'
             ..['dart:async'] = null;
  -        objectFile.imports
  +        _objectFile.imports
             ..['package:streamy/streamy.dart'] = 'streamy'
             ..['package:fixnum/fixnum.dart'] = 'fixnum'
             ..[config.baseImport] = BASE_PREFIX;
  -        dispatchFile.imports
  +        _dispatchFile.imports
             ..['package:streamy/streamy.dart'] = 'streamy'
             ..['package:fixnum/fixnum.dart'] = 'fixnum'
             ..[config.baseImport] = BASE_PREFIX
             ..[importPath('objects.dart')] = 'objects';
           out.addAll([resourceFile, requestFile, objectFile, dispatchFile]);
  -        resourceFile.imports.addAll(api.imports);
  -        requestFile.imports.addAll(api.imports);
  -        objectFile.imports.addAll(api.imports);
  -        dispatchFile.imports.addAll(api.imports);
  -        client = new StreamyClient(config, rootFile, resourceFile, requestFile, objectFile, dispatchFile);
  +        _resourceFile.imports.addAll(api.imports);
  +        _requestFile.imports.addAll(api.imports);
  +        _objectFile.imports.addAll(api.imports);
  +        _dispatchFile.imports.addAll(api.imports);
  +        _client = new StreamyClient(config, rootFile, resourceFile, requestFile, objectFile, dispatchFile);
           break;
       }
  -    
  +
       rootFile.imports.addAll(api.imports);
  -    
  +  }
  +
  +  StreamyClient process() {
       // Root class
       if (config.generateApi) {
  -      rootFile.classes.addAll(processRoot(resourcePrefix, dispatchPrefix));
  -      resourceFile.classes.addAll(processResources(requestPrefix, objectPrefix));
  -      requestFile.classes.addAll(processRequests(objectPrefix, dispatchPrefix));
  +      rootFile.classes.addAll(processRoot());
  +      resourceFile.classes.addAll(processResources());
  +      requestFile.classes.addAll(processRequests());
       }
       var schemas = processSchemas();
       objectFile.classes.addAll(schemas.map((schema) => schema.clazz));
       objectFile.typedefs.addAll(schemas.map((schema) => schema.globalDef)
           .where((v) => v != null));
       if (config.generateMarshallers) {
  -      dispatchFile.classes.add(processMarshaller(objectPrefix));
  +      dispatchFile.classes.add(processMarshaller());
       }
       return client;
     }
     
  -  List<DartClass> processRoot(String resourcePrefix, String dispatchPrefix) {
  +  List<DartClass> processRoot() {
       // Create the resource mixin class.
       var resourceMixin = new DartClass('${makeClassName(api.name)}ResourcesMixin');
       if (api.description != null) {
  
positive.code:     schema.properties.forEach((_, field) {
        // Add getter and setter, delegating to map access.
        var name = makePropertyName(field.name);
        var type = toDartType(field.typeRef, null);
        if (config.mapBackedFields) {
          var f = new DartComplexField(name, type,
              new DartTemplateBody(getter, {'name': field.name}),
  
negative.code:     // Determine payload type.
      var payloadType;
      if (method.payloadType != null) {
        payloadType = toDartType(method.payloadType);
      }
      
      var listParams = method
        .parameters
        .values
        .where((param) => param.typeRef is ListTypeRef)
        .map((param) => {
          'name': param.name,
          'type': toDartType(param.typeRef.subType),
        })
        .toList(growable: false);
      
      // Set up a _root field for the implementation RequestHandler, and a
  