docs: boolean isPurableOperation(XtendFunction operation, ISideEffectContext context) {
  		if (isUnpureOperationPrototype(operation)) {
  			return false;
  		}
  		if (this.nameValidator.isNamePatternForNotPureOperation(operation)) {
  			return false;
  		}
  		if (this.nameValidator.isNamePatternForPureOperation(operation)) {
  			return true;
  		}
  		if (context == null) {
  			return !hasSideEffects(
  					getInferredPrototype(operation),
  					operation.getExpression());
  		}
  		final Boolean result = internalHasSideEffects(operation.getExpression(), context);
  		return result == null || !result.booleanValue();
  	}