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

#ifndef __java_util_AbstractMap$SimpleEntry__
#define __java_util_AbstractMap$SimpleEntry__

#pragma interface

#include <java/lang/Object.h>

class java::util::AbstractMap$SimpleEntry : public ::java::lang::Object
{

public:
  AbstractMap$SimpleEntry(::java::lang::Object *, ::java::lang::Object *);
  AbstractMap$SimpleEntry(::java::util::Map$Entry *);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::Object * getKey();
  virtual ::java::lang::Object * getValue();
  virtual jint hashCode();
  virtual ::java::lang::Object * setValue(::java::lang::Object *);
  virtual ::java::lang::String * toString();
private:
  static const jlong serialVersionUID = -8499721149061103585LL;
public: // actually package-private
  ::java::lang::Object * __attribute__((aligned(__alignof__( ::java::lang::Object)))) key;
  ::java::lang::Object * value;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_AbstractMap$SimpleEntry__
