public List<SingleContextAttributeSnapshot> getDiff(ContextSnapshot s) {
    List<SingleContextAttributeSnapshot> diff = new ArrayList<SingleContextAttributeSnapshot>();
    List<SingleContextAttributeSnapshot> fullList = getList();

    for (SingleContextAttributeSnapshot single : fullList) {
      if (!s.equalsSnapshot(single)) {
        diff.add(single);
      }
    }

    List<SingleContextAttributeSnapshot> sFullList = s.getList();

    for (SingleContextAttributeSnapshot single : sFullList) {
      if (!equalsSnapshot(single)) {
        diff.add(single);
      }
    }
    return diff;
  }
  public List<SingleContextAttributeSnapshot> getMatches(ContextSnapshot s) {
    List<SingleContextAttributeSnapshot> matches = new ArrayList<SingleContextAttributeSnapshot>();

    List<SingleContextAttributeSnapshot> fullList = getList();

    for (SingleContextAttributeSnapshot single : fullList) {
      if (s.equalsSnapshot(single)) {
        matches.add(single);
      }
    }
    return matches;
  }