anchor.diff:      if  not (aSharedTransaction is TmDatabaseConnection) then
         raise TmDataConnectionException.Create('Shared transaction is not a TmDatabaseConnection. Don''t know how to handle it.');
   
  -    if ((aSharedTransaction as TmDatabaseConnection).ConnectionInfo.DatabaseName = FConnectionInfo.DatabaseName) and
  -      ((aSharedTransaction as TmDatabaseConnection).ConnectionInfo.VendorType = FConnectionInfo.VendorType) then
  -      Self.SetSharedConnection(aSharedTransaction as TmDatabaseConnection);
  +    if (aSharedTransaction as TmDatabaseConnection).ConnectionInfo.IsEqual(FConnectionInfo) then
  +      Self.SetSharedConnection(aSharedTransaction as TmDatabaseConnection)
  +    else
  +    begin
  +      ancestorConnection := (aSharedTransaction as TmDatabaseConnection).FindAncestorConnection(FConnectionInfo);
  +      if Assigned(ancestorConnection) then
  +        Self.SetSharedConnection(ancestorConnection)
  +      else
  +        Self.FAncestorConnection := aSharedTransaction as TmDatabaseConnection;
  +    end;
     end;
   end;
   
  
positive.code:         FOwnedConnection := TmDatabaseConnection.Create;
      {$ELSE}
        FOwnedConnection := TmDatabaseConnection.Create;
        if Assigned(FConnectionInfo) then
          FOwnedConnection.ConnectionInfo := FConnectionInfo;
      {$ENDIF}
  
negative.code:   TmDatabaseConnectionsTandem = class
    strict private
      FOwnedConnection : TmDatabaseConnection;
      FAncestorConnection : TmDatabaseConnection;
      FSharedConnection : TmDatabaseConnection;
      FConnectionInfo : TmDatabaseConnectionInfo;
      procedure SetSharedConnection (aConnection : TmDatabaseConnection);
  