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

#ifndef __java_util_Collections$1$SynchronizedMapEntry__
#define __java_util_Collections$1$SynchronizedMapEntry__

#pragma interface

#include <java/lang/Object.h>

class java::util::Collections$1$SynchronizedMapEntry : public ::java::lang::Object
{

public: // actually package-private
  Collections$1$SynchronizedMapEntry(::java::util::Collections$SynchronizedMap *, ::java::util::Map$Entry *);
public:
  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();
public: // actually package-private
  ::java::util::Map$Entry * __attribute__((aligned(__alignof__( ::java::lang::Object)))) e;
  ::java::util::Collections$SynchronizedMap * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Collections$1$SynchronizedMapEntry__
