code: @Override
      public boolean isEqual(Object o) {
          if (o == this) {
              return true;
          }
          if (!(o instanceof AbstractParameter)) {
              return false;
          }
  
          AbstractParameter a = (AbstractParameter) o;
          Granularity startGranularity = getInterval().getStartGranularity();
          Granularity aStartGranularity = a.getInterval().getStartGranularity();
          Granularity finishGranularity = getInterval().getFinishGranularity();
          Granularity aFinishGranularity = a.getInterval().getFinishGranularity();
          return super.isEqual(a)
                  && (startGranularity == aStartGranularity || (startGranularity != null && startGranularity
                          .equals(aStartGranularity)))
                  && (finishGranularity == aFinishGranularity || (finishGranularity != null && finishGranularity
                          .equals(aFinishGranularity)))
                  && (this.contextId == a.contextId || (this.contextId != null && this.contextId.equals(a.contextId)));
      }
docs: /*
  (non-Javadoc)
  
  @see org.protempa.proposition.Proposition#isEqual(java.lang.Object)