public E execute(ElementContext<E> context) {

		Number element = context.getElement();
		if (element == null) {
			return null;
		}
		
		if (element instanceof Long) {
			return (E)Long.valueOf(element.longValue() + number.longValue());
		}
		
		if (element instanceof Integer) {
			return (E)Integer.valueOf(element.intValue() + number.intValue());
		}

		if (element instanceof Short) {
			return (E)Short.valueOf((short)(element.intValue() + number.intValue()));
		}

		if (element instanceof Byte) {
			return (E)Byte.valueOf((byte)(element.intValue() + number.intValue()));
		}

		if (element instanceof Double) {
			return (E)Double.valueOf(element.doubleValue() + number.doubleValue());
		}

		if (element instanceof Float) {
			return (E)Float.valueOf(element.floatValue() + number.floatValue());
		}
		
		if (element instanceof BigDecimal) {
			return (E)((BigDecimal)element).add(new Converter().convert(number).to(BigDecimal.class));
		}
		
		if (element instanceof BigInteger) {
			return (E)((BigInteger)element).add(new Converter().convert(number).to(BigInteger.class));
		}

		return null;
	}