hunk.code_window: import { Subject } from '../Subject';
   import { Operator } from '../Operator';
   import { Subscriber } from '../Subscriber';
   import { Observable } from '../Observable';
   import { ConnectableObservable, connectableObservableDescriptor } from '../observable/ConnectableObservable';
   import { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction } from '../types';
   /* tslint:disable:max-line-length */
   export function multicast<T>(subject: Subject<T>): UnaryFunction<Observable<T>, ConnectableObservable<T>>;
  
hunk.labels: keep keep keep keep keep replace keep keep keep
hunk.after_edit: import { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';
  
hunk.file_path: src/internal/operators/multicast.ts
hunk.type: replace
file: import { of } from 'rxjs';
  import { min } from 'rxjs/operators';
  
  it('should infer correctly', () => {
      const a = of(1, 2, 3).pipe(min()); // $ExpectType Observable<number>
      const b = of('abc', 'bcd', 'def').pipe(min()); // $ExpectType Observable<string>
  });
  
  it('should except empty comparer', () => {
      const a = of(1, 2, 3).pipe(min()); // $ExpectType Observable<number>
  });
  
  it('should enforce comparer types', () => {
      const a = of(1, 2, 3).pipe(min((a: number, b: number) => a - b)); // $ExpectType Observable<number>
      const b = of(1, 2, 3).pipe(min((a: number, b: string) => 0)); // $ExpectError
      const c = of(1, 2, 3).pipe(min((a: string, b: number) => 0)); // $ExpectError
  });
  