code: public List<String> getPossibleStates() {
          List<String> copy = new ArrayList<String>();
          for (String possibleStatus : states.keySet()) {
              copy.add(possibleStatus);
          }
          return copy;
      }
docs: This method only returns a copy of the list, if you modify the copy, the
  internal list of PossibleStates will be not modified. To interact with
  the real list, use "addPossibleStatus" and "removePossibleStatus" methods
  
  @return a copy of possibleStates list