#ifndef VIRTUAL_METHODS_H_
#define VIRTUAL_METHODS_H_
class VirtualMethodsInHeaders {
 public:
  
  virtual void MethodIsAbstract() = 0;
  virtual void MethodHasNoArguments();
  virtual void MethodHasEmptyDefaultImpl() {}
  
  virtual bool ComplainAboutThis() { return true; }
};
class WarnOnMissingVirtual : public VirtualMethodsInHeaders {
 public:
  void MethodHasNoArguments() override;
};
namespace testing {
struct TestStruct {};
}  
class VirtualMethodsInHeadersTesting : public VirtualMethodsInHeaders {
 public:
  
  void MethodHasNoArguments();
 private:
  testing::TestStruct tester_;
};
#endif