class Annotation extends ElementHeader {

    @Override
    public boolean equals(Object objectToCompare)
    {
        if (this == objectToCompare)
        {
            return true;
        }
        if (objectToCompare == null || getClass() != objectToCompare.getClass())
        {
            return false;
        }
        if (!super.equals(objectToCompare))
        {
            return false;
        }
        Annotation that = (Annotation) objectToCompare;
        return getConfidenceLevel() == that.getConfidenceLevel() &&
                Objects.equals(getAnnotationType(), that.getAnnotationType()) &&
                Objects.equals(getSummary(), that.getSummary()) &&
                Objects.equals(getExpression(), that.getExpression()) &&
                Objects.equals(getExplanation(), that.getExplanation()) &&
                Objects.equals(getAnalysisStep(), that.getAnalysisStep()) &&
                Objects.equals(getJsonProperties(), that.getJsonProperties()) &&
                getNumAttachedAnnotations() == that.getNumAttachedAnnotations() &&
                getAnnotationStatus() == that.getAnnotationStatus() &&
                Objects.equals(getReviewDate(), that.getReviewDate()) &&
                Objects.equals(getSteward(), that.getSteward()) &&
                Objects.equals(getReviewComment(), that.getReviewComment()) &&
                Objects.equals(getAdditionalProperties(), that.getAdditionalProperties()) &&
                Objects.equals(getExtendedProperties(), that.getExtendedProperties());
    }

    public  Annotation();
    public  Annotation(Annotation template);

}