package akin.lang; /** Specialized method of operators (+, -, *, /, etc.) */ public abstract class OperatorMethod<T> extends Method { @SuppressWarnings("unchecked") public AkinObject call(AkinObject receiver, AkinObject arguments[]) throws AkinException { T self = (T) receiver.as(ValueObject.class).getValue(); T arg = (T) arguments[0].as(ValueObject.class).getValue(); return perform(self, arg); } public abstract AkinObject perform(T receiver, T argument) throws AkinException; }