code: void acceptOperation(Operation operation) throws MetadataUpdateException {
          checkNotSealed();
          if (operation instanceof SegmentOperation) {
              val segmentMetadata = getSegmentUpdateTransaction(((SegmentOperation) operation).getStreamSegmentId());
              segmentMetadata.setLastUsed(operation.getSequenceNumber());
              if (operation instanceof StreamSegmentAppendOperation) {
                  segmentMetadata.acceptOperation((StreamSegmentAppendOperation) operation);
              } else if (operation instanceof StreamSegmentSealOperation) {
                  segmentMetadata.acceptOperation((StreamSegmentSealOperation) operation);
              } else if (operation instanceof MergeSegmentOperation) {
                  MergeSegmentOperation mto = (MergeSegmentOperation) operation;
                  SegmentMetadataUpdateTransaction sourceMetadata = getSegmentUpdateTransaction(mto.getSourceSegmentId());
                  sourceMetadata.acceptAsSourceSegment(mto);
                  sourceMetadata.setLastUsed(operation.getSequenceNumber());
                  segmentMetadata.acceptAsTargetSegment(mto, sourceMetadata);
              } else if (operation instanceof UpdateAttributesOperation) {
                  segmentMetadata.acceptOperation((UpdateAttributesOperation) operation);
              } else if (operation instanceof StreamSegmentTruncateOperation) {
                  segmentMetadata.acceptOperation((StreamSegmentTruncateOperation) operation);
              } else if (operation instanceof DeleteSegmentOperation) {
                  segmentMetadata.acceptOperation((DeleteSegmentOperation) operation);
              }
          }
  
          if (operation instanceof MetadataCheckpointOperation) {
              // A MetadataCheckpointOperation represents a valid truncation point. Record it as such.
              this.newTruncationPoints.add(operation.getSequenceNumber());
          } else if (operation instanceof StreamSegmentMapOperation) {
              acceptMetadataOperation((StreamSegmentMapOperation) operation);
          }
      }
docs: Accepts the given Operation. The Operation's effects are reflected in the pending transaction.
  This method has no effect on Metadata Operations.
  See OperationMetadataUpdater.acceptOperation for more details on behavior.
  
  @param operation The operation to accept.
  @throws MetadataUpdateException If the given operation was rejected given the current state of the metadata.
  @throws NullPointerException    If the operation is null.