docs: public <X> DataStream<X> getSideOutput(OutputTag<X> sideOutputTag) {
  		if (wasSplitApplied) {
  			throw new UnsupportedOperationException("getSideOutput() and split() may not be called on the same DataStream. " +
  				"As a work-around, please add a no-op map function before the split() call.");
  		}
  
  		sideOutputTag = clean(requireNonNull(sideOutputTag));
  
  		// make a defensive copy
  		sideOutputTag = new OutputTag<X>(sideOutputTag.getId(), sideOutputTag.getTypeInfo());
  
  		TypeInformation<?> type = requestedSideOutputs.get(sideOutputTag);
  		if (type != null && !type.equals(sideOutputTag.getTypeInfo())) {
  			throw new UnsupportedOperationException("A side output with a matching id was " +
  					"already requested with a different type. This is not allowed, side output " +
  					"ids need to be unique.");
  		}
  
  		requestedSideOutputs.put(sideOutputTag, sideOutputTag.getTypeInfo());
  
  		SideOutputTransformation<X> sideOutputTransformation = new SideOutputTransformation<>(this.getTransformation(), sideOutputTag);
  		return new DataStream<>(this.getExecutionEnvironment(), sideOutputTransformation);
  	}