@Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ContextImpl context = (ContextImpl) o;
    return Objects.equals(jobContext, context.jobContext) && Objects.equals(containerContext, context.containerContext)
        && Objects.equals(taskContext, context.taskContext) && Objects.equals(applicationContainerContextOptional,
        context.applicationContainerContextOptional) && Objects.equals(applicationTaskContextOptional,
        context.applicationTaskContextOptional) && Objects.equals(externalContextOptional,
        context.externalContextOptional);
  }
@param jobContext non-null job context
@param containerContext non-null framework container context
@param taskContext non-null framework task context
@param applicationContainerContextOptional optional application-defined container context
@param applicationTaskContextOptional optional application-defined task context
@param externalContextOptional optional external context
samza-core/src/main/java/org/apache/samza/context/ContextImpl.java