
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_swing_text_AbstractDocument$Bypass__
#define __javax_swing_text_AbstractDocument$Bypass__

#pragma interface

#include <javax/swing/text/DocumentFilter$FilterBypass.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class AbstractDocument;
          class AbstractDocument$Bypass;
          class AttributeSet;
          class Document;
      }
    }
  }
}

class javax::swing::text::AbstractDocument$Bypass : public ::javax::swing::text::DocumentFilter$FilterBypass
{

public: // actually package-private
  AbstractDocument$Bypass(::javax::swing::text::AbstractDocument *);
public:
  virtual ::javax::swing::text::Document * getDocument();
  virtual void insertString(jint, ::java::lang::String *, ::javax::swing::text::AttributeSet *);
  virtual void remove(jint, jint);
  virtual void replace(jint, jint, ::java::lang::String *, ::javax::swing::text::AttributeSet *);
public: // actually package-private
  ::javax::swing::text::AbstractDocument * __attribute__((aligned(__alignof__( ::javax::swing::text::DocumentFilter$FilterBypass)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_AbstractDocument$Bypass__
