text: //
  //  Generated by the J2ObjC translator.  DO NOT EDIT!
  //  source: android/platform/libcore/ojluni/src/main/java/java/io/FilterOutputStream.java
  //
  
  #include "../../J2ObjC_header.h"
  
  #pragma push_macro("INCLUDE_ALL_JavaIoFilterOutputStream")
  #ifdef RESTRICT_JavaIoFilterOutputStream
  #define INCLUDE_ALL_JavaIoFilterOutputStream 0
  #else
  #define INCLUDE_ALL_JavaIoFilterOutputStream 1
  #endif
  #undef RESTRICT_JavaIoFilterOutputStream
  
  #pragma clang diagnostic push
  #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  
  #if __has_feature(nullability)
  #pragma clang diagnostic push
  #pragma GCC diagnostic ignored "-Wnullability"
  #pragma GCC diagnostic ignored "-Wnullability-completeness"
  #endif
  
  #if !defined (JavaIoFilterOutputStream_) && (INCLUDE_ALL_JavaIoFilterOutputStream || defined(INCLUDE_JavaIoFilterOutputStream))
  #define JavaIoFilterOutputStream_
  
  #define RESTRICT_JavaIoOutputStream 1
  #define INCLUDE_JavaIoOutputStream 1
  #include "../../java/io/OutputStream.h"
  
  @class IOSByteArray;
  
  /*!
   @brief This class is the superclass of all classes that filter output
    streams.These streams sit on top of an already existing output
    stream (the <i>underlying</i> output stream) which it uses as its
    basic sink of data, but possibly transforming the data along the
    way or providing additional functionality.
   <p>
    The class <code>FilterOutputStream</code> itself simply overrides
    all methods of <code>OutputStream</code> with versions that pass
    all requests to the underlying output stream. Subclasses of 
   <code>FilterOutputStream</code> may further override some of these
    methods as well as provide additional methods and fields.
   @author Jonathan Payne
   @since JDK1.0
   */
  @interface JavaIoFilterOutputStream : JavaIoOutputStream {
   @public
    /*!
     @brief The underlying output stream to be filtered.
     */
    JavaIoOutputStream *out_;
  }
  
  #pragma mark Public
  
  /*!
   @brief Creates an output stream filter built on top of the specified
    underlying output stream.
   @param outArg the underlying output stream to be assigned to                 the field 
    <tt> this.out </tt>  for later use, or                 
    <code> null </code>  if this instance is to be                 created without an underlying stream.
   */
  - (instancetype __nonnull)initWithJavaIoOutputStream:(JavaIoOutputStream *)outArg;
  
  /*!
   @brief Closes this output stream and releases any system resources
    associated with the stream.
   <p>
    The <code>close</code> method of <code>FilterOutputStream</code>
    calls its <code>flush</code> method, and then calls the 
   <code>close</code> method of its underlying output stream.
   @throw IOExceptionif an I/O error occurs.
   - seealso: java.io.FilterOutputStream
   - seealso: java.io.FilterOutputStream
   */
  - (void)close;
  
  /*!
   @brief Flushes this output stream and forces any buffered output bytes
    to be written out to the stream.
   <p>
    The <code>flush</code> method of <code>FilterOutputStream</code>
    calls the <code>flush</code> method of its underlying output stream.
   @throw IOExceptionif an I/O error occurs.
   - seealso: java.io.FilterOutputStream
   */
  - (void)flush;
  
  /*!
   @brief Writes <code>b.length</code> bytes to this output stream.
   <p>
    The <code>write</code> method of <code>FilterOutputStream</code>
    calls its <code>write</code> method of three arguments with the arguments 
   <code>b</code>, <code>0</code>, and 
   <code>b.length</code>.
    <p>
    Note that this method does not call the one-argument 
   <code>write</code> method of its underlying stream with the single
    argument <code>b</code>.
   @param b the data to be written.
   @throw IOExceptionif an I/O error occurs.
   - seealso: java.io.FilterOutputStream
   */
  - (void)writeWithByteArray:(IOSByteArray *)b;
  
  /*!
   @brief Writes <code>len</code> bytes from the specified 
   <code>byte</code> array starting at offset <code>off</code> to
    this output stream.
   <p>
    The <code>write</code> method of <code>FilterOutputStream</code>
    calls the <code>write</code> method of one argument on each 
   <code>byte</code> to output. 
   <p>
    Note that this method does not call the <code>write</code> method
    of its underlying input stream with the same arguments. Subclasses of 
   <code>FilterOutputStream</code> should provide a more efficient
    implementation of this method.
   @param b the data.
   @param off the start offset in the data.
   @param len the number of bytes to write.
   @throw IOExceptionif an I/O error occurs.
   - seealso: java.io.FilterOutputStream
   */
  - (void)writeWithByteArray:(IOSByteArray *)b
                     withInt:(jint)off
                     withInt:(jint)len;
  
  /*!
   @brief Writes the specified <code>byte</code> to this output stream.
   <p>
    The <code>write</code> method of <code>FilterOutputStream</code>
    calls the <code>write</code> method of its underlying output stream,
    that is, it performs <tt>out.write(b)</tt>.
    <p>
    Implements the abstract <tt>write</tt> method of <tt>OutputStream</tt>.
   @param b the  <code> byte </code> .
   @throw IOExceptionif an I/O error occurs.
   */
  - (void)writeWithInt:(jint)b;
  
  // Disallowed inherited constructors, do not use.
  
  - (instancetype __nonnull)init NS_UNAVAILABLE;
  
  @end
  
  J2OBJC_EMPTY_STATIC_INIT(JavaIoFilterOutputStream)
  
  J2OBJC_FIELD_SETTER(JavaIoFilterOutputStream, out_, JavaIoOutputStream *)
  
  FOUNDATION_EXPORT void JavaIoFilterOutputStream_initWithJavaIoOutputStream_(JavaIoFilterOutputStream *self, JavaIoOutputStream *outArg);
  
  FOUNDATION_EXPORT JavaIoFilterOutputStream *new_JavaIoFilterOutputStream_initWithJavaIoOutputStream_(JavaIoOutputStream *outArg) NS_RETURNS_RETAINED;
  
  FOUNDATION_EXPORT JavaIoFilterOutputStream *create_JavaIoFilterOutputStream_initWithJavaIoOutputStream_(JavaIoOutputStream *outArg);
  
  J2OBJC_TYPE_LITERAL_HEADER(JavaIoFilterOutputStream)
  
  #endif
  
  
  #if __has_feature(nullability)
  #pragma clang diagnostic pop
  #endif
  
  #pragma clang diagnostic pop
  #pragma pop_macro("INCLUDE_ALL_JavaIoFilterOutputStream")
  