anchor.diff:    end;
   
     // Extract the service name
  +  // use FDefaultProcessor as fallback if there is no separator
     idx := Pos( TMultiplexedProtocol.SEPARATOR, msg.Name);
  -  if idx < 1 then begin
  +  if idx > 0 then begin
  +
  +    // Create a new TMessage, something that can be consumed by any TProtocol
  +    sService := Copy( msg.Name, 1, idx-1);
  +    if not FServiceProcessorMap.TryGetValue( sService, processor)
  +    then begin
  +      Error( oprot, msg,
  +             TApplicationExceptionInternalError,
  +             Format(ERROR_UNKNOWN_SERVICE,[sService]));
  +      Exit( FALSE);
  +    end;
  +
  +    // Create a new TMessage, removing the service name
  +    Inc( idx, Length(TMultiplexedProtocol.SEPARATOR));
  +    Init( newMsg, Copy( msg.Name, idx, MAXINT), msg.Type_, msg.SeqID);
  +
  +  end
  +  else if FDefaultProcessor <> nil then begin
  +    processor := FDefaultProcessor;
  +    newMsg    := msg;  // no need to change
  +
  +  end
  +  else begin
       Error( oprot, msg,
              TApplicationExceptionInvalidProtocol,
              Format(ERROR_INCOMPATIBLE_PROT,[msg.Name]));
       Exit( FALSE);
     end;
   
  -  // Create a new TMessage, something that can be consumed by any TProtocol
  -  sService := Copy( msg.Name, 1, idx-1);
  -  if not FServiceProcessorMap.TryGetValue( sService, processor)
  -  then begin
  -    Error( oprot, msg,
  -           TApplicationExceptionInternalError,
  -           Format(ERROR_UNKNOWN_SERVICE,[sService]));
  -    Exit( FALSE);
  -  end;
  -
  -  // Create a new TMessage, removing the service name
  -  Inc( idx, Length(TMultiplexedProtocol.SEPARATOR));
  -  Init( newMsg, Copy( msg.Name, idx, MAXINT), msg.Type_, msg.SeqID);
  -
     // Dispatch processing to the stored processor
     protocol := TStoredMessageProtocol.Create( iprot, newMsg);
     result   := processor.process( protocol, oprot, events);
  
positive.code:     // Register a service with this TMultiplexedProcessorImpl.  This allows us
      // to broker requests to individual services by using the service name
      // to select them at request time.
      procedure RegisterProcessor( const serviceName : String; const processor : IProcessor);
  
      { This implementation of process performs the following steps:
        - Read the beginning of the message.
  
negative.code: 
    private
      FServiceProcessorMap : TDictionary<String, IProcessor>;
      FDefaultProcessor : IProcessor;
  
      procedure Error( const oprot : IProtocol; const msg : TThriftMessage;
                       extype : TApplicationExceptionSpecializedClass; const etxt : string);
  