001    package com.thaiopensource.validate.nrl;
002    
003    abstract class Action {
004      private final ModeUsage modeUsage;
005    
006       Action(ModeUsage modeUsage) {
007         this.modeUsage = modeUsage;
008       }
009    
010       ModeUsage getModeUsage() {
011         return modeUsage;
012       }
013    
014       public boolean equals(Object obj) {
015         return obj != null && obj.getClass() == getClass() && ((Action)obj).modeUsage.equals(modeUsage);
016       }
017    
018      public int hashCode() {
019        return getClass().hashCode() ^ modeUsage.hashCode();
020      }
021    }