code: private void generateJavaCode(Service service, Document iddDoc) throws Exception {
  
  		IDLReader reader = new IDLReader();
  
  		Document extensionDoc = parseExtensionFile(service.getServiceName());
  
  		String packageName = derivePackageName(service, iddDoc);
  
          reader.init(iddDoc, extensionDoc, service.getServiceName(), packageName, getBaseDir(),
          				generatedSourceDir, getLog(), service.getOutputDir(), isClient(), isServer());
  
          runMerge(reader);
  
          // also create the stripped down, combined version of the IDD doc
          getLog().debug("Generating combined IDD sans comments...");
          Document combinedIDDDoc = parseIddFromString(reader.serialize());
          // WARNING: this absolutely has to be run after a call to reader.runMerge (called by runMerge above) as otherwise the version will be null...
          generateExposedIDD(combinedIDDDoc, reader.getInterfaceName(), reader.getInterfaceMajorMinorVersion());
  
          // generate WSDL/XSD
          getLog().debug("Generating wsdl...");
          generateWsdl(iddDoc, reader.getInterfaceName(), reader.getInterfaceMajorMinorVersion());
          getLog().debug("Generating xsd...");
          generateXsd(iddDoc, reader.getInterfaceName(), reader.getInterfaceMajorMinorVersion());
  	}
docs: The original concept of the IDLReader (other devs) has gone away a bit, so there could be
  some refactoring around this.