code: public boolean equalsContents(Object o) {
          if(this == o) {
              return true;
          }
          if(o == null) {
              return false;
          }
          if (o.getClass() != getClass()) {
              return false;
          }
  
          if(!super.equalsContents(o)) {
              return false;
          }
  
          Referenceable obj = (Referenceable)o;
          if (!traitNames.equals(obj.getTraits())) {
              return false;
          }
  
          return true;
      }
docs: Matches traits, values associated with this Referenceable and skips the id match
  @param o The Referenceable which needs to be matched with
  @return