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

#ifndef __gnu_javax_management_Server$ServerInputStream__
#define __gnu_javax_management_Server$ServerInputStream__

#pragma interface

#include <java/io/ObjectInputStream.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace management
      {
          class Server;
          class Server$ServerInputStream;
      }
    }
  }
}

class gnu::javax::management::Server$ServerInputStream : public ::java::io::ObjectInputStream
{

public:
  Server$ServerInputStream(::gnu::javax::management::Server *, ::java::io::InputStream *, ::java::lang::ClassLoader *);
public: // actually protected
  virtual ::java::lang::Class * resolveClass(::java::io::ObjectStreamClass *);
private:
  ::java::lang::ClassLoader * __attribute__((aligned(__alignof__( ::java::io::ObjectInputStream)))) cl;
public: // actually package-private
  ::gnu::javax::management::Server * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_management_Server$ServerInputStream__
