code: public static SingleInputSemanticProperties readSingleConstantAnnotations(UserCodeWrapper<?> udf) {
  		
  		// get constantSet annotation from stub
  		AllFieldsConstants allConstants = udf.getUserCodeAnnotation(AllFieldsConstants.class);
  		ConstantFields constantSet = udf.getUserCodeAnnotation(ConstantFields.class);
  		ConstantFieldsExcept notConstantSet = udf.getUserCodeAnnotation(ConstantFieldsExcept.class);
  
  		if (notConstantSet != null && (constantSet != null || allConstants != null)) {
  			throw new RuntimeException("Either ConstantFields or ConstantFieldsExcept can be specified, not both.");
  		}
  		
  		// extract notConstantSet from annotation
  		if (notConstantSet != null) {
  			FieldSet nonConstant = new FieldSet(notConstantSet.value());
  			return new ImplicitlyForwardingSingleInputSemanticProperties(nonConstant);
  		}
  		
  		// extract notConstantSet from annotation
  		if (allConstants != null) {
  			FieldSet nonConstant = new FieldSet();
  			return new ImplicitlyForwardingSingleInputSemanticProperties(nonConstant);
  		}
  		
  		SingleInputSemanticProperties semanticProperties = new SingleInputSemanticProperties();
  		
  		// extract constantSet from annotation
  		if (constantSet != null) {
  			for (int value: constantSet.value()) {
  				semanticProperties.addForwardedField(value,value);
  			}
  		}
  		
  		return semanticProperties;
  	}
docs: --------------------------------------------------------------------------------------------