/**
   * Gets all the annotations in a particular feature set
   *
   * @param featureSet
   * @return
   */
  public static Set<SeqFeatureI> getAnnotations(SeqFeatureI featureSet) {
    HashSet<SeqFeatureI> result = new HashSet<SeqFeatureI>();

    if (featureSet.isTranscript()) {

      if (featureSet.isContainedByRefSeq())
        // only add if its fully in range
        result.add(featureSet);

    } else if (featureSet.isAnnotTop() && !featureSet.hasKids()) {
      // only add if its fully in range
      if (featureSet.isContainedByRefSeq()) result.add(featureSet);

    } else {
      for (int i = 0, size = featureSet.getFeatures().size(); i < size; i++) {
        SeqFeatureI feature = featureSet.getFeatureAt(i);
        if (feature.canHaveChildren()) {
          result.addAll(getAnnotations(feature));
        }
      }
    }

    return result;
  }