// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package j$.util.stream;

public class Stream<T> {

  public static java.util.stream.Stream<?> inverted_wrap_convert(j$.util.stream.Stream<?> stream) {
    return null;
  }

  public static j$.util.stream.Stream<?> inverted_wrap_convert(java.util.stream.Stream<?> stream) {
    return null;
  }

  public static java.util.stream.Stream<?> wrap_convert(j$.util.stream.Stream<?> stream) {
    return null;
  }

  public static j$.util.stream.Stream<?> wrap_convert(java.util.stream.Stream<?> stream) {
    return null;
  }
}
